英語で読む

次の方法で共有


コンパイラ エラー CS0841

宣言する前にローカル変数 'name' を使用することはできません。

変数を使用するには、先にその変数を宣言する必要があります。

宣言の前に使用された変数の例

次の例では、CS0841 が生成されます。

// cs0841.cs
using System;

public class Program
{
    public static void Main()
    {
        j = 5; // CS0841
        int j;
    }
}

使用前に宣言を移動してエラーを修正する

エラーが発生した行の前に、変数の宣言を移動します。

using System;  

public class Program
{
    public static void Main()
    {
        int j;
        j = 5;
    }
}

型をシャドウする変数の例

次の例の意図は、parameterMyEnum.A を比較することです。 ローカル変数は同じ型名で後で宣言されるため、型 MyEnum をシャドウし、このメソッドの MyEnum によって enum が参照されなくなりましたが、宣言されたローカル変数を参照します。

using System;

public enum MyEnum
{
    A, B, C
}

public class C
{
    public void M(MyEnum parameter)
    {
        // error CS0841: Cannot use local variable 'MyEnum' before it is declared
        if (parameter == MyEnum.A)
        {
            return;
        }

        // Change the variable to 'myEnum' to avoid shadowing the 'MyEnum' type.
        // This change also aligns with the C# coding conventions.
        var MyEnum = parameter;
        Console.WriteLine(MyEnum.ToString());
    }
}