0

メンバー変数ではなく、パラメーターを明示的に参照するにはどうすればよいですか?

static recursive{

    public static List<string> output = new List<string>();

    public static void Recursive(List<string> output){
        ...
    }
}
4

7 に答える 7

2

修飾されていない参照は、よりローカルなスコープにあるため、常にパラメーターを参照します。

thisメンバー変数を参照する場合は、クラスの名前(または、非静的メンバー変数の場合)で修飾する必要があります。

output = foo;              // refers to the parameter
recursive.output = foo;    // refers to a static member variable
this.output = foo;         // refers to a non-static member variable

しかし、とにかく名前を変更する必要があります。これにより、コードがはるかに読みやすくなります。

また、パブリック静的変数はまったく使用しないでください。.NETコーディングスタイルのガイドラインはすべて、パブリックフィールドを公開するのではなく、プロパティを強く推奨しています。そして、それらは常にキャメルケースに入れられているので、この問題はそれ自体で解決します。

于 2011-06-15T14:55:00.190 に答える
0
public class MyClass {
    public int number = 15;

    public void DoSomething(int number) {
        Console.WriteLine(this.number); // prints value of "MyClass.number"
        Console.WriteLine(number); // prints value of "number" parameter
    }
}

編集::

静的フィールドの場合、「this」の代わりにクラスの名前が必要です。

public class MyClass {
    public static int number = 15;

    public void DoSomething(int number) {
        Console.WriteLine(this.number); // prints value of "MyClass.number"
        Console.WriteLine(MyClass.number); // prints value of "number" parameter
    }
}
于 2011-06-15T14:55:08.410 に答える
0
public static void Recursive(List<string> output){
        ...
    }

参照するブロック内のコードoutputは常にローカルであり、メンバー変数ではありません。

メンバー変数を参照する場合は、を使用できますrecursive.output

于 2011-06-15T14:55:15.210 に答える
0

Recursive静的メソッド内にいるときはoutput、メソッドの引数を指します。静的フィールドをポイントする場合は、静的クラスの名前をプレフィックスとして使用します。recursive.output

于 2011-06-15T14:55:20.563 に答える
0

メンバー変数に別の名前を付けます。慣例では、パブリック静的メンバーでキャメルケースを使用します。

public static List<string> Output = new List<string>();

public static void Recursive( List<string> output )
{
   Output = output;
}
于 2011-06-15T14:55:24.597 に答える
0

静的メンバーを示すために明示的に参照することもできますがrecursive.output、パラメーターまたはメンバーの名前を変更する方がクリーンです。

于 2011-06-15T14:56:04.853 に答える
0

パラメータを明示的に参照する方法がわかりません。これが通常処理される方法は、パラメーターにまったく同じ名前が付けられないように、メンバー変数に_またはなどの特別なプレフィックスを付けることです。m_もう1つの方法は、this.varを使用してメンバー変数を参照することです。

于 2011-06-15T14:56:11.383 に答える