2009-03-20 4 views
1

C# 4 선택적 매개 변수 구현은 VB.NET과 동일하며 선택적 매개 변수가 호출 사이트에서 컴파일됩니다 (버전 문제를 일으킬 수 있음)?C# 4 선택적 매개 변수

답변

4

Yes.

+2

이것은 C#에 심각한 약점을 추가합니다. 선택적 요소가 오버로드가 아닌 호출 사이트에서 구현된다는 사실은 선택적 매개 변수가 변경되면 서로에 대해 빌드되지 않은 어셈블리가 작동하지 않음을 의미합니다. 나는 왜 우리가 그것을 필요로하는지 보지 못한다. 오버로딩은 동일한 기능을 제공하고 서명은 보이지 않게 수정되지 않습니다. – stevehipwell

+0

기본값은 함수 정의의 일부입니다. 그것을 변경하는 것은 함수의 이름을 변경하는 것만 큼 나쁘다. 이는 선택적 매개 변수를 통해 노출 될 때 기본값이 과부하로 구워 질 때와 마찬가지입니다. –

3

SamNg에 따르면 C#'s default arguments are is compiled at the call site은 C++의 기본 매개 변수와 비슷합니다.

예, 버전 문제가 발생합니다. 그러나 선택적 매개 변수가 의미가있는 곳에 사용되어야합니다. 대부분의 경우 이것은 null 또는 기본 생성 클래스를 메서드 또는 생성자에 전달하는 것을 의미합니다.

+0

FIXME : Sam Ng는 누구인가요? 그는 M $ 개발자인가? – strager

+1

blogs.msdn.com의 모든 블로거는 MS 직원 (일부는 MVP입니까?)이라고 생각합니다. –