C# 3.0에서 개체 초기화 생성자에 선택적 괄호를 도입한 이유는 무엇인가요?
구문적 편의로서 C# 3.0에서는 매개 변수가 없는 생성자가 있는 경우 개체 이니셜라이저의 생성자 호출에서 괄호를 생략할 수 있습니다. 예:
<code class="language-c#">var x = new XTypeName { PropA = value, PropB = value }; // 括号可选</code>
옵션 괄호를 사용하는 이유
C# 팀은 다음 고려 사항에 따라 괄호를 선택 사항으로 만들기로 결정했습니다.
모든 기본 생성자 호출에서 괄호를 선택 사항으로 만드는 것은 어떨까요?
일반적인 경우에 선택적 괄호를 사용하면 다음 예와 같이 의미가 모호해질 수 있습니다.
<code class="language-c#">class P { class B { public class M { } } class C : B { new public void M(){} } static void Main() { new C().M(); // 1 new C.M(); // 2 } }</code>
이 경우 1행에서는 C의 기본 생성자를 호출한 다음 인스턴스 메서드 M을 호출하고, 2행에서는 B.M의 새 인스턴스를 생성하고 기본 생성자를 호출합니다. 1행에서 괄호를 선택 사항으로 만들면 모호성이 발생하므로 컴파일러는 이 문제를 해결하기 위해 복잡한 규칙을 도입해야 합니다. 이러한 추가 복잡성으로 인한 잠재적 비용은 이 경우 선택적 괄호의 이점보다 큽니다.
위 내용은 C# 3.0 개체 이니셜라이저 생성자에서 괄호가 선택 사항인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!