2014-09-12 2 views
2

나는 중괄호의 사용이 종류에 걸쳐 왔어요 내가하는 객체의 인스턴스를 만듭니다 :사용 자 마린을 공부

Label label = new Label(); 
label.Text = "Label"; 
... 

어떤 종류의 중괄호 사용입니까? 둥근 괄호없이 객체를 어떻게 만들 수 있습니까?

+2

이것은 일반적인 C# 3.0 (이상) 개체 초기화 식입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/vstudio/bb738566.aspx를 참조하십시오. –

+0

두 기능에는 차이가 없습니다. – Casey

+1

또한 해당 객체에 대해 매개 변수없는 생성자 (또는 없음)가있는 경우 ** 생성자 **에 대한 괄호를 생략 할 수 있습니다. 매개 변수를 사용하는 생성자가있는 경우 객체 초기화 프로그램과 결합 할 수 있습니다. 'new Person ("John", "Smith") {Address = "123 Main Street"}'구문도 유효합니다. – ardila

답변

4

정상적인 C# 3.0 (이상) 개체 초기화 식입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/bb397680.aspxhttp://msdn.microsoft.com/en-us/library/vstudio/bb738566.aspx을 참조하십시오.

Label header = new Label 
{ 
    Text = "Label", 
}; 

이전에
Label label = new Label(); 
label.Text = "Label"; 

간의 미묘한 차이가이 속성 값을 설정할 때하는 가변 header은 같이 동시에 할당되지 않고, 예외가 발생 후자입니다. 당신이 볼 수 있듯이 두 번째 줄에서 예외가, 세 번째 줄은 결코 실행되지 도착이있는 경우,

Label temp = new Label(); 
temp.Text = "Label"; 
Label label = temp; 

: 그 이유는 전자가에 해당한다는 것이다.

3

object initializer syntax이라는 개체의 속성을 초기화하는 데 사용하는 구문이 다릅니다. 미래의 개발자에게 "이 객체는 이러한 속성이 설정 될 때까지 준비가되어 있지 않다"고 알려주는 방법으로 유용합니다.

이 구문은 익숙하지 않은 이유 일 수있는 새로운 기능 in C# 3.0 중 하나였습니다.