コンパイラ エラー CS0844
宣言する前にローカル変数 'name' を使用することはできません。 ローカル変数の宣言によって、フィールド 'name' が非表示になります。
識別子は、所定のブロックで 1 つの意味のみを持つことができます。 クラス フィールドと同じ名前を持つローカル変数は、識別子の 2 番目の意味を導入することによって、フィールドを非表示にできます。 したがって、コンパイラは、メソッドでクラス フィールドを参照し、同じ名前でローカル変数を宣言すると、エラーを生成します。
this.num
を使用して、クラス フィールドを参照します。ローカル変数にクラス フィールドとは別の名前を付けます。
次のコードでは CS0844 が生成されます。
class Test
{
int num;
public void TestMethod()
{
num = 5; // CS0844
int num = 6;
}
public static int Main()
{
return 1;
}
}
class Test
{
int num;
public void TestMethod()
{
this.num = 5; // Error fixed.
int num = 6;
}
public static int Main()
{
return 1;
}
}
class Test
{
int num;
public void TestMethod()
{
num = 5; // Error fixed.
int num2 = 6;
}
public static int Main()
{
return 1;
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。