[解決済み] C# 4.0では、オーバーロードとオプションのパラメータを使用してメソッドを宣言する必要がありますか?
2023-02-07 15:39:29
質問
私が見ていたのは Anders の C# 4.0 と C# 5.0 のスニークプレビューについての講演を見ました。 を見ていて、C# でオプションのパラメータが利用できるようになったら、すべてのパラメータを指定する必要のないメソッドを宣言する推奨方法はどうなるんだろう、と考えさせられました。
例えば
FileStream
クラスには約 15 種類のコンストラクタがあり、それらは論理的な「ファミリー」に分けることができます。
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 からは、密接に関連するコンストラクターとメソッドのグループをオプションのパラメーターを持つ単一のメソッドにすることがより理にかなっているのか、それとも従来の多数のオーバーロードのメカニズムに固執する正当な理由があるのでしょうか?
どのように解決するのですか?
次のように考えています。
- オプションのパラメータをサポートしない言語から、あなたのコードを使用する必要がありますか?もしそうなら、オーバーロードを含めることを検討してください。
- あなたのチームには、オプショナルパラメータに激しく反対するメンバーがいますか?(時には、ケースを議論するよりも、気に入らない決定と共存する方が簡単なことがあります)。
- デフォルトがコードのビルド間で変更されないと確信していますか、または変更される可能性がある場合、呼び出し元はそれで大丈夫ですか?
デフォルトがどのように機能するか確認したことはありませんが、デフォルト値は
const
フィールドへの参照と同じです。通常、それは問題ありません。デフォルト値の変更はいずれにせよかなり重要です。
関連
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] Javaオプションパラメータ
-
[解決済み] Goのオプションのパラメータ?
-
[解決済み] C#でオプションのパラメータを使用するにはどうすればよいですか?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] C#4 インターフェースで定義されたオプションパラメータは、なぜ実装クラスで強制されないのですか?
-
[解決済み] ASP.NET MVCでコントローラのメソッドをオーバーロードすることはできますか?
-
[解決済み】C# 4.0のオプションのout/ref引数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] C# 4.0におけるメソッドのオーバーロードとオプションのパラメータ [重複].