Compilerfout CS0841
Kan geen lokale variabele 'naam' gebruiken voordat deze wordt gedeclareerd.
Een variabele moet worden gedeclareerd voordat deze wordt gebruikt.
In het volgende voorbeeld wordt CS0841 gegenereerd:
// cs0841.cs
using System;
public class Program
{
public static void Main()
{
j = 5; // CS0841
int j;
}
}
Verplaats de variabeledeclaratie vóór de regel waar de fout optreedt.
using System;
public class Program
{
public static void Main()
{
int j;
j = 5;
}
}
In het volgende voorbeeld werd de intentie vergeleken parameter
met MyEnum.A
. Omdat een lokale variabele die later met dezelfde typenaam is gedeclareerd, het type MyEnum
schaduwt en MyEnum
in deze methode niet langer verwijst naar de enum
, maar verwijst naar de gedeclareerde lokale variabele.
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());
}
}
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: