次の方法で共有


メンバーのオーバーロード

このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。

メンバーのオーバーロードとは、パラメーターの数または型のみが異なるが、同じ名前のメンバーを同じ型に 2 つ以上作成することを意味します。 たとえば、次の例では、 WriteLine メソッドがオーバーロードされています。

public static class Console {
    public void WriteLine();
    public void WriteLine(string value);
    public void WriteLine(bool value);
    ...
}

パラメーターを持つことはメソッド、コンストラクター、およびインデックス付きプロパティのみであるため、これらのメンバーのみをオーバーロードできます。

オーバーロードは、再利用可能なライブラリの使いやすさ、生産性、読みやすさを向上させるための最も重要な手法の 1 つです。 パラメーターの数をオーバーロードすると、より単純なバージョンのコンストラクターとメソッドを提供できます。 パラメーター型をオーバーロードすると、選択した異なる型のセットに対して同じ操作を実行するメンバーに同じメンバー名を使用できます。

✔️ わかりやすいパラメーター名を使用して、短いオーバーロードで使用される既定値を示すようにしてください。

❌ オーバーロード内のパラメーター名を任意に変更しないようにします。 あるオーバーロード内のパラメーターが別のオーバーロードのパラメーターと同じ入力を表す場合、パラメーターの名前は同じである必要があります。

❌ オーバーロードされたメンバーのパラメーターの順序に一貫性がないことを避けます。 同じ名前のパラメーターは、すべてのオーバーロードで同じ位置に表示されます。

✔️ 最長のオーバーロードのみを仮想にしてください (拡張性が必要な場合)。 短いオーバーロードは、長いオーバーロードを通して呼び出してください。

❌ メンバーをオーバーロードするために ref 修飾子または out 修飾子を使用しないでください。

一部の言語では、このようなオーバーロードの呼び出しを解決できません。 さらに、このようなオーバーロードには通常、まったく異なるセマンティクスがあり、おそらくオーバーロードではなく、2 つの個別のメソッドにする必要があります。

❌ セマンティクスは異なるが、同じ位置に似たような型があるパラメーターを使用してオーバーロードしないでください。

✔️ オプションの引数に null を渡せるようにします。

✔️ 既定の引数でメンバーを定義するのではなく、メンバーオーバーロードを使用してください。

既定の引数は CLS に準拠していません。

Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。

こちらも参照ください