1

一連のメソッドのオーバーロードを、名前付きおよびオプションのパラメーターを持ついくつかのメソッドに置き換えています。

これで問題が発生することはありませんが、'out' の使用中にスパナが動作していることに気付きました。

例えば

私が電話した場合:

 foo(int a, out int b, int c = -1, string d = "")

このメソッドを呼び出すたびに、コンパイラはエラーをスローします。これは、このメソッドに関連するシグネチャとして認識されないか、認識されないためです。

オプションのパラメータは必須のパラメータの後に来る必要があることを認識しています->「out」を含むパラメータにはそのようなルールがありますか、それとも明らかなものがありませんか?

4

1 に答える 1

3

例に従って定義されたメソッドを呼び出すことを意味する場合は、(たとえば):

int x;
foo(123, out x, d: "hi");

outパラメータをオプションにすることはできません (つまり、オプションのパラメータの前に指定する必要があります) が、(名前付き引数として) どこにでも指定できます。たとえば、次のようになります。

int x;
foo(b: out x, a: 123);

オプションにしたい場合bは、オーバーロードが必要になります。

void foo(int a, int c = -1, string d = "")
{
    int b;
    foo(a, out b, c, d);
}

これで、次のように呼び出すことができます。

foo(123, d: "hi");
于 2011-04-26T09:42:11.757 に答える