閱讀英文

共用方式為


編譯器錯誤 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());
    }
}