답변
this은 Microsoft의 "공식적인"대답입니다. 그러나 기본 (및 명명 된) 매개 변수 은 C# 4.0에서을 사용할 수 있습니다.
첫 번째 질문은 - 아니요, 여러 가지 오버로드 된 생성자를 제공하는 것과 정확히 같습니다. 둘째로, 나는 말할 수 없었다.
아니요, 캡슐화에 영향을주지 않습니다. 단순히 자주 필요하지 않습니다. 종종 인수의 수를 줄이는 오버로드를 만드는 것이보다 유연하고 깨끗한 솔루션이므로 C#의 디자이너는 언어에 기본 매개 변수의 복잡성을 추가하는 이유를 알지 못합니다.
"같은 일을하는 또 다른 방법"을 추가하는 것은 항상 단점입니다. 경우에 따라 편리 할 수 있습니다. 그러나 합법적으로 만드는 구문이 많을수록 언어가 더 복잡해지고 더 많은 사람들이 장벽을 뚫을 수있어 향후 확장을 막을 수 있습니다. (아마 그들은 비슷한 구문을 사용하는 언어에 대한 또 다른 확장 기능을 제공 할 것입니다. 이전에 추가 한 기능과 충돌하기 때문에 추가 할 수 없습니다.)
여기가 C# 4.0의 기본 매개 변수 구현과 C#으로 http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx
한 가지 단점을 제공는 매개 변수 이름에 대한 종속성을 생성하는하지 왜 대답이다. 이것은 VB에서 이미 존재했기 때문에 4.0에서 구현 한 이유 중 하나 일 수 있습니다.
또 다른 단점은 개체를 캐스팅하는 방법에 따라 기본값이 달라진다는 것입니다. 여기에서 읽을 수 있습니다 : http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html.
앞서 언급했듯이 기본 매개 변수는 우선 순위 지정 기능이 아니지만 C# 4.0에 추가 될 가능성이 큽니다. 그러나 이전 버전을 포함시키지 않는 것이 좋은 이유가 있다고 생각합니다 (4.0에서, 이해했듯이 기본 매개 변수가 형식 호환성을 향상시키는 duck typing 프로그래밍 스타일을 지원하는 것이 대부분입니다).
과도한 매개 변수 목록 (분명히 4-5 개의 고유 매개 변수 이상)은 code smell입니다. 기본 매개 변수 자체는 악의가 없지만 디자인 불량을 초래하여 리팩터링을 더 많은 객체로 지연시킬 수 있습니다.
- 1. 실제 매개 변수가 충분하지 않습니까?
- 2. 기본 템플릿 매개 변수가 생성자
- 3. 재정의 기본 경로에는 매개 변수가
- 4. 필수 = true 페이지 매개 변수가 작동하지 않습니까?
- 5. 왜 #define이 좋지 않습니까?
- 6. 왜 전역이 좋지 않습니까?
- 7. 중간 파일이 좋지 않습니까?
- 8. 왜 이러한 기본 매개 변수가 정의되어 있습니까?
- 9. RDS sane의 기본 mysql 매개 변수가 있습니까?
- 10. 여러 로그인 위치가 좋지 않습니까?
- 11. Java에서 OOP의 기본 원칙을 사용하는 간단한 프로젝트
- 12. 매개 변수가
- 13. 데이터베이스 디자인에서 사용자 이름을 기본 키로 사용하는 것이 좋지 않습니까?
- 14. 시간이 자동으로 증가하는 기본 키가 있다고 가정하는 것이 좋지 않습니까?
- 15. 매개 변수가 클래스를 확장합니다.
- 16. MediaScannerConnection.scanFile을 사용하는 것이 좋지 않습니까?
- 17. 긴 jQuery 체인이 좋지 않습니까?
- 18. Java Object [] 성능이 좋지 않습니까?
- 19. WPF Matrix3D.Rotate() 함수가 좋지 않습니까?
- 20. 데이터 기반 테스트가 좋지 않습니까?
- 21. EBADF 선택 : FD가 좋지 않습니까?
- 22. 배경 스레드가 좋지 않습니까? 왜?
- 23. with 키워드는 javascript에서 좋지 않습니까?
- 24. WCF의 'by ref'인수가 좋지 않습니까?
- 25. OOP의 C++ :
- 26. iReport 2.0.4 : SQL 쿼리에서 문자열 유형 매개 변수가 작동하지 않습니까?
- 27. 내 프로그램 (Qt4)에서 왜 poppler pdf 렌더링이 좋지 않습니까?
- 28. 데이터 객체에서 RESX 국제화 사용, 좋지 않습니까?
- 29. 모든보기가 하나의보기 컨트롤러에 연결되는 것이 좋지 않습니까?
- 30. SQL OOP의 문제 : 출력
"귀하의 질문을"코드에서 이상한 곳에서 오는 비밀스러운 마법 물건입니까? "라고 읽습니다. C#에서는이 선택적 매개 변수 GARBAGE가 허용되므로 훌륭한 언어는 허용되지 않습니다. – Sharky