Anders의 C # 4.0 및 C # 5.0 미리보기에 대한 이야기를 보고 있었는데 , C #에서 선택적 매개 변수를 사용할 수있을 때 모든 매개 변수를 지정할 필요가없는 메소드를 선언하는 데 권장되는 방법이 무엇인지 생각하게되었습니다.
예를 들어, FileStream
클래스 와 같은 것에 는 논리적 '패밀리'로 나눌 수있는 약 15 개의 다른 생성자가 있습니다. 예를 들어 문자열에서 아래의 것, an IntPtr
의 것, SafeFileHandle
.
FileStream(string,FileMode);
FileStream(string,FileMode,FileAccess);
FileStream(string,FileMode,FileAccess,FileShare);
FileStream(string,FileMode,FileAccess,FileShare,int);
FileStream(string,FileMode,FileAccess,FileShare,int,bool);
이 유형의 패턴은 3 개의 생성자를 대신 사용하고 기본값으로 설정할 수있는 매개 변수에 대해 선택적 매개 변수를 사용하여 단순화 할 수있는 것 같습니다. 이렇게하면 생성자의 다른 패밀리가 더 뚜렷해집니다. [참고 :이 변경 사항은 BCL에서 만든, 나는 이러한 유형의 상황에 대해 가상으로 이야기하고 있습니다].
어떻게 생각해? C # 4.0부터는 밀접하게 관련된 생성자 및 메서드 그룹을 선택적 매개 변수가있는 단일 메서드로 만드는 것이 더 합리적일까요? 아니면 기존의 많은 오버로드 메커니즘을 고수해야 할 좋은 이유가 있습니까?