C# Error
CS0841 – Cannot use local variable ‘{0}’ before it is declared
Reason for the Error & Solution
Cannot use local variable ‘name’ before it is declared.
A variable must be declared before it is used.
Example of a variable used before declaration
The following example generates CS0841:
// cs0841.cs
using System;
public class Program
{
public static void Main()
{
j = 5; // CS0841
int j;
}
}
Correct the error by moving the declaration before usage
Move the variable declaration before the line where the error occurs.
using System;
public class Program
{
public static void Main()
{
int j;
j = 5;
}
}
Example of a variable shadowing a type
In the following example, the intent was comparing parameter with MyEnum.A. Because a local variable declared later with the same type name, it shadows the type MyEnum and MyEnum in this method no longer refers to the enum, but refers to the declared local variable.
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());
}
}