答えて
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. コンストラクタのスレッド...悪い練習ですか?
- 2. JavaScriptのエラー/悪い練習
- 3. クラススコープtypedef悪い練習ですか?
- 4. マスターインクルードファイル - 良いか悪い練習
- 5. この春のチュートリアルでは悪い練習ですか?
- 6. これは悪いコールバックの練習ですか?
- 7. データベースのアップアップ - 良いか悪い練習ですか?
- 8. AlarmMangerは常に起動し、停止、悪い練習ですか?
- 9. は、隠されたグローバルな悪いプログラミング練習ですか?
- 10. PHPでの練習が悪いですか?
- 11. CakePHP routes.phpの内部認証、悪い練習ですか?
- 12. 私は悪いプログラミングの練習をキャッチしよう
- 13. Jquery |同じ機能の中の機能。それは悪い練習ですか?
- 14. MPMusicPlayerControllerを何度もインスタンス化します。良い/悪い練習
- 15. xbox360 XNA APIメソッドからnullを返します。悪い練習ですか?
- 16. Project_Prefix.pchを使用して私のシングルトンクラスをインポートする - 悪い練習ですか?
- 17. Javascript - オブジェクトに関数を格納する - 悪い練習ですか?
- 18. jQuery $。AJAXリクエストと組み合わせて、悪い練習ですか?
- 19. "assert false;"良い練習ですか?
- 20. ウェブページの練習
- 21. これは悪い習慣ですか?
- 22. は@unlink悪い習慣ですか?
- 23. これは私がここでやっている悪いJavascriptの練習ですか?
- 24. PHPレッスン/練習。
- 25. 練習問題?
- 26. すでにハッシュされた値、良いか悪い練習でHMACを使用していますか?
- 27. Javascriptingは、スコープチェーンの練習
- 28. Android webserviceの練習ですか?
- 29. ベストjQueryの練習
- 30. オブジェクト指向プログラミング(OOP)スキルの学習または改善のための優れた課題/タスク/練習
私はあなたの質問を「私のコードではどこからでも邪魔されない魔法のものが来ていますか?」と読んでいます。私は、C#がこのオプションのパラメータGARBAGEを許可するようなきめ細かい言語を受け入れることはできません。 – Sharky