문제

메소드의 기본 매개변수가 캡슐화를 위반합니까?

C#에서 기본 매개변수를 제공하지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책

난 가져갈거다 이것 Microsoft의 "공식"답변으로. 그러나 기본 (및 명명) 매개 변수 ~ 할 것이다 대부분 C# 4.0에서 사용할 수 있습니다.

다른 팁

아니요, 어떤 식으로든 캡슐화에 영향을 미치지 않습니다.단순히 자주 필요한 것은 아닙니다.더 적은 수의 인수를 사용하는 오버로드를 생성하는 것이 더 유연하고 깔끔한 솔루션인 경우가 많으므로 C#의 디자이너는 기본 매개 변수의 복잡성을 언어에 추가할 이유를 찾지 못했습니다.

"동일한 작업을 수행하는 다른 방법"을 추가하는 것은 항상 절충안입니다.어떤 경우에는 편리할 수도 있습니다.그러나 더 많은 구문을 합법화할수록 언어를 배우기가 더 복잡해지고, 더 많은 벽에 걸려 향후 확장을 방해할 수 있습니다.(아마도 그들은 언젠가 비슷한 구문을 사용하는 언어에 대한 또 다른 확장을 내놓을 것입니다.그러면 이전에 추가한 기능과 충돌하므로 추가가 불가능합니다.)

언급 된 바와 같이, 기본 매개 변수는 우선 순위가 지정된 기능이 아니지만 C# 4.0에 추가 될 수 있습니다. 그러나, 나는 그것을 이전에 포함시키지 않는 훌륭한 이유가 있다고 생각합니다 (내가 이해했듯이 4.0에서, 그것은 주로 지원해야합니다. 오리 타이핑 기본 매개 변수가 유형 호환성을 증가시키는 프로그래밍 스타일).

나는 과도한 매개 변수 목록 (확실히 4-5 개 이상의 별개가)이라고 생각합니다. 코드 냄새. 기본 매개 변수는 그 자체로 악한 것이 아니라 디자인이 열악한 것을 장려하여 더 많은 객체로 리팩토링을 지연시킵니다.

첫 번째 질문에 - 아니요, 여러 개의 과부하 생성자를 제공하는 것과 정확히 동일합니다. 두 번째는 말할 수 없었습니다.

기본 매개 변수는 C# 4.0에 포함됩니다

그것에 대한 일부 독서 자료 :

딸깍 하는 소리

딸깍 하는 소리

또한 저자 인 것 같습니다 이 게시물 가까운 시일 내에 '왜'가 C#에서 기본 매개 변수를 구현하기로 선택한 기사를 게시합니다.

다음은 C#에 제공되지 않는 이유입니다.http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx

C# 4.0의 기본 매개 변수 구현의 한 가지 단점은 매개 변수 이름에 종속성을 생성한다는 것입니다. 이것은 이미 VB에 존재했으며, 이로 인해 4.0으로 구현하기로 선택한 이유 중 하나 일 수 있습니다.

또 다른 단점은 기본값이 객체를 주조하는 방법에 따라 다르다는 것입니다. 여기에서 읽을 수 있습니다. http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top