答えて
thisはマイクロソフトからの "公式"回答です。ただし、デフォルトの(および名前付きの)パラメータは、C#4.0で最も確かに利用可能なのはです。
最初の質問には、いいえ、複数のオーバーロードコンストラクタを提供することとまったく同じです。第二は、私は言うことができませんでした。
いいえ、カプセル化には何も影響しません。それはしばしば必要ではない。多くの場合、引数の少ないオーバーロードを作成する方がより柔軟でクリーンなソリューションであるため、C#のデザイナーは、デフォルトパラメータの複雑さを言語に追加する理由は見当たりませんでした。
「同じことをする別の方法」を追加することは、常にトレードオフです。場合によっては便利かもしれません。しかし、あなたが合法化する構文が増えるほど、言語はより複雑になり、学びやすくなり、将来の拡大を防ぐことができます。 (おそらく、彼らはいつか同じような構文を使用する言語の別の拡張機能を思いついたでしょう。以前に追加した機能と矛盾するので、追加できないでしょう)
は、ここでそれがC#4.0では、デフォルトのパラメータの実装とC#で http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx
一つの欠点を提供し、それはパラメータ名の依存を作成することですいない理由を答えです。これはすでにVBで存在していたため、4.0で実装する理由の1つになる可能性があります。
もう一つの欠点は、オブジェクトをキャストする方法によってデフォルト値が異なることです。あなたはそれについてここで読むことができます:http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html。
既述のように、デフォルトのパラメータは優先順位付けされた機能ではありませんが、C#4.0では追加される可能性があります。しかし、私はそれを以前には含まないといい理由があったと確信しています(私が理解しているように、4.0ではデフォルトのパラメータがタイプの互換性を向上させるduck typingのプログラミングスタイルをサポートしています)。
過剰なパラメータリスト(確かに4つ以上の異なるパラメータ)はcode smellです。デフォルトのパラメータはそれ自身では悪いことではありませんが、設計が貧弱なため、リファクタリングがより多くのオブジェクトに遅延します。
- 1. Java Reflectionは悪い練習ですか?
- 2. C#デリゲートイベントは悪い練習ですか?
- 3. UserControlsのGridView、悪い練習ですか?
- 4. コンストラクタのスレッド...悪い練習ですか?
- 5. クラススコープtypedef悪い練習ですか?
- 6. JavaScriptのエラー/悪い練習
- 7. マスターインクルードファイル - 良いか悪い練習
- 8. この春のチュートリアルでは悪い練習ですか?
- 9. これは悪いコールバックの練習ですか?
- 10. データベースのアップアップ - 良いか悪い練習ですか?
- 11. AlarmMangerは常に起動し、停止、悪い練習ですか?
- 12. これは本当に悪い練習ですか?
- 13. は、隠されたグローバルな悪いプログラミング練習ですか?
- 14. PHPでの練習が悪いですか?
- 15. CakePHP routes.phpの内部認証、悪い練習ですか?
- 16. PHP PDO複数のクエリが悪い練習ですか?
- 17. Captchaは悪い練習ですか?ブルートフォース攻撃者からの保護方法
- 18. ifステートメント内のifステートメントの使用、良いか悪い練習ですか?
- 19. Jquery |同じ機能の中の機能。それは悪い練習ですか?
- 20. 私は悪いプログラミングの練習をキャッチしよう
- 21. ウェブサイトのライブアップデート - 1秒あたり1 ajaxは悪い練習ですか?
- 22. 多くのQueueTrigger悪い練習でAzure WebJobs?
- 23. 春のブート@トランザクションの難しい組み込みの悪い練習ですか?
- 24. モデル内から別のレコードを作成する:悪い練習ですか?
- 25. MPMusicPlayerControllerを何度もインスタンス化します。良い/悪い練習
- 26. クラスの追加/削除/切り替え - 良い/悪い練習ですか?
- 27. xbox360 XNA APIメソッドからnullを返します。悪い練習ですか?
- 28. Project_Prefix.pchを使用して私のシングルトンクラスをインポートする - 悪い練習ですか?
- 29. Javascript - 静的メソッドとインスタンスメソッドの同じ名前の悪い練習ですか?
- 30. 応答メッセージ用のカスタムヘッダーの使用。悪い練習?
私はあなたの質問を「私のコードではどこからでも邪魔されない魔法のものが来ていますか?」と読んでいます。私は、C#がこのオプションのパラメータGARBAGEを許可するようなきめ細かい言語を受け入れることはできません。 – Sharky