Edit

Share via


Compiler Error CS0841

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());
    }
}