編譯器錯誤 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;
}
}
在下列範例中,意圖會比較 parameter
與 MyEnum.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());
}
}