编译器错误 CS0815
无法将“expression”赋予隐式类型的局部变量
用作隐式类型变量的初始值设定项的表达式必须具有一个类型。 由于匿名函数表达式、方法组表达式和 null 文本表达式没有类型,因此它们不是适当的初始值设定项。 不能在隐式类型的变量的声明中用 null 值对其进行初始化,但稍后可为其赋予 null 值。
在 C# 版本 10 中,具有自然类型的 Lambda 表达式和方法组可用作 var
声明中的初始化表达式。
- 为变量提供显式类型。
- 或者,使用 C# 版本 10 及更高版本指定自然类型。
以下代码生成 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;
}
}