Bill Wagner의 Effective C # 을 읽고 있습니다. 에서 항목 14 - 중복 초기화 로직을 최소화 , 그는 새로운 선택적 매개 변수는 생성자에서 기능을 사용하여 다음과 같은 예를 보여줍니다
public MyClass(int initialCount = 0, string name = "")
그가 사용하는 것을 알 수 ""
대신 string.Empty
.
그는 다음과 같이 말합니다.
[위의 예에서] 두 번째 생성자가 name 매개 변수 의 기본값으로 더 관례적인
string.Empty
. 이는string.Empty
컴파일 시간 상수가 아니기 때문 입니다. 문자열 클래스에 정의 된 정적 속성입니다. 컴파일 상수가 아니기 때문에 매개 변수의 기본값으로 사용할 수 없습니다.
string.Empty
모든 상황 에서 정적을 사용할 수 없다면 , 그것이 그 목적을 무너 뜨리지 않습니까? 나는 우리가 빈 문자열을 참조하는 시스템 독립적 인 수단을 가지고 있는지 확인하기 위해 그것을 사용할 것이라고 생각했습니다. 내 이해가 잘못 되었습니까? 감사.
업데이트
후속 댓글입니다. MSDN에 따르면 :
각 선택적 매개 변수에는 정의의 일부로 기본값이 있습니다. 해당 매개 변수에 대해 인수가 전송되지 않으면 기본값이 사용됩니다. 기본값은 상수 여야합니다.
그러면 우리는 System.Environment.NewLine
둘 중 하나 를 사용할 수 없거나 새로 인스턴스화 된 객체를 기본값으로 사용할 수 없습니다 . 아직 VS2010을 사용하지 않았는데 이것은 실망 스럽습니다!