14

次の状況で、C# (またはメソッドのオーバーロードをサポートするオブジェクト指向言語) に何らかの規則はありますか?

メソッドfooがあるとしましょう:

public void Foo(int a){//does stuff}

しかし、実際には3つのメソッドfooがあります:

public void Foo(int a){}
public void Foo(int a, double b){}
public void Foo(float c, int a, double b){}

オーバーロードされたメソッドでパラメーターの順序が重要かどうかを示す規則はありますか? 3 番目の方法が明らかな論理進行 (a、b、c) ではないことに注意してください。

4

2 に答える 2

21

はいあります。https://msdn.microsoft.com/en-us/library/ms229029(v=vs.110).aspxをご覧ください。

オーバーロードされたメンバーのパラメーターの順序に一貫性を持たせてください。同じ名前のパラメーターは、すべてのオーバーロードで同じ位置に表示される必要があります。

于 2013-02-12T20:32:09.180 に答える
2

特定の順序を維持する必要はありませんが、読みやすさのために、一般的には維持することをお勧めします。ただし、パラメータの順序はメソッド シグネチャにとって重要です。例えば、

public void DoStuff(int a, bool b, string c)
{

}

public void DoStuff(bool b, string c, int a)
{

}

パラメーターの数や名前が同じであっても、有効であり、問​​題なくコンパイルされます。

更新: この方法はお勧めしません。混乱を招く恐れがあります。私はそれが技術的に有効であると述べただけです。

于 2013-02-12T20:37:40.533 に答える