C# 9.0报错‘inferred delegate type不可用’的原因及解决方法
问题解析与解决
错误含义
这个错误表示你使用的C# 9.0版本不支持var推断委托类型的特性。用var直接声明lambda表达式变量(比如var sayHello = () => $"Hello, {name}";)是C# 10才引入的语法糖,更早版本的编译器无法自动推断该lambda对应的委托类型。
解决方法
有两种可行的解决方式:
1. 显式指定委托类型
放弃var,直接声明变量为匹配的委托类型。示例中lambda无参数且返回字符串,对应Func<string>:
var name = "Kyle"; Func<string> sayHello = () => $"Hello, {name}"; Console.WriteLine(sayHello());
如果lambda有参数或返回其他类型,需对应匹配委托类型:比如带单个字符串参数的用Func<string, string>,无返回值的用Action。
2. 升级项目的C#版本到10.0及以上
若你的开发环境支持(如Visual Studio 2022及以上),可修改项目设置升级C#版本:
- 在Visual Studio中右键项目 → 属性 → 生成 → 高级 → 语言版本,选择"C# 10.0"或更高版本。
- 或直接编辑项目文件(.csproj),添加/修改
<LangVersion>节点:
<PropertyGroup> <LangVersion>10.0</LangVersion> </PropertyGroup>
内容的提问来源于stack exchange,提问作者KyleMit
相关产品推荐
相关产品推荐

