Compilerfehler CS0815
'expression' kann keiner implizit typisierten lokalen Variablen zugeordnet werden.
Ein Ausdruck, der als Initialisierer für eine implizit typisierte Variable verwendet wird, muss einen Typ aufweisen. Da anonyme Funktionsausdrücke, Methodengruppenausdrücke und der NULL-Literalausdruck nicht über einen Typ verfügen, sind sie nicht als Initialisierer geeignet. Eine implizit typisierte Variable kann nicht mit einem NULL-Wert in ihrer Deklaration initialisiert werden. Ihr kann später jedoch ein Wert von NULL zugewiesen werden.
Mit C#-Version 10 können Lambdaausdrücke und -methodengruppen mit natürlichen Typen als Initialisierer in var
-Deklarationen verwendet werden.
So beheben Sie diesen Fehler
- Geben Sie einen expliziten Typ für die Variable an.
- Oder geben Sie mit C#-Version 10 und höher natürliche Typen an.
Beispiel
Der folgende Code generiert CS0815:
// cs0815.cs
class Test
{
public static int Main()
{
var d = s => -1; // CS0815
var e = (string s) => 0; // CS0815 for C# versions before 10
var p = null; // CS0815
var del = delegate(string a) { return -1; }; // CS0815
return -1;
}
}