2009-03-11 4 views
3

VB.NET의 선택적 클래스 속성에 이상한 구문이있는 이유는 무엇입니까?

VB.NET의 클래스/속성 특성이 다음과 같은 이상한 선택 구문을 갖는 이유에 대해 궁금합니다.

VB.NET에서는 주문 제한을 피하기 위해 선택적 매개 변수를 설정할 수 있습니다. 그러나이 경우 그것은 당신에게 그것을 강요합니다.

예를 들어 매개 변수가 원래 정의와 동일한 순서로되어 있더라도

<TestAttr("a", "abc", "foo", 3)> 

예를 들어이 작업을 수행 할 수 없습니다.

여기에는 어떤 이유가 있을까요? 또는 .NET 디자이너가 주제에 관해 게으르다는 것입니까?

답변

4

여기에 명명 된 속성 인수와 함께 선택적 매개 변수를 혼동하는 것 같습니다. 속성을 사용하면 생성자에서 해당 매개 변수가없는 속성의 public 필드/속성을 설정하는 것이 타당합니다. VB.Net은 이름 구문에 의한 호출과 동일한 구문을 사용하기로 결정했습니다.

Reflector에서 TestAttr을 여는 경우 클래스에 생성자가 2 개 있고 Optional1 및 Optional2라는 이름의 공용 필드가 2 개인 생성자가 있다고 생각합니다.

+0

나는 속성을 작성한 적이 없다는 것을 알았으니 이제는 더 이해가된다. 공개 필드에는 순서가 없으므로 사용할 수 없습니다. 지금 이해하십시오. –

0

필수 매개 변수는 생성자 매개 변수입니다. 선택 항목은 공용 쓰기 가능한 속성으로 제공됩니다. 모든 매개 변수를 제공하는 생성자를 만드는 것이 필요합니다. 항상 가치있는 것은 아닙니다.