这失败了

string temp = () => {return "test";};

带着错误

无法将lambda表达式转换为类型"string",因为它不是委托类型

错误是什么意思?我如何解决它?

推荐答案

这里的问题是,您定义了一个匿名方法,该方法返回string,但试图将其直接赋给string.这是一个表达式,调用时会产生string,而不是直接的string.需要将其分配给兼容的委托类型.在这种情况下,最简单的 Select 是Func<string>

Func<string> temp = () => {return "test";};

这可以在一行中通过一点强制转换或使用委托构造函数来建立lambda的类型,然后进行调用来完成.

string temp = ((Func<string>)(() => { return "test"; }))();
string temp = new Func<string>(() => { return "test"; })();

注:两个样本都可能短接到缺少{ return ... }的表达形式

Func<string> temp = () => "test";
string temp = ((Func<string>)(() => "test"))();
string temp = new Func<string>(() => "test")();

.net相关问答推荐

避免函数和其他对象之间的相互递归的模式?

是否存在指定的(子)索引分隔符?

防止在 .NET 上构建路径中的反斜杠以进行跨平台部署

如何规范机器之间连字符的排序顺序?

为什么 .net 对字符串使用 UTF16 编码,但默认使用 UTF-8 来保存文件?

为什么字典比列表快得多?

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

如何在 C# 中序列化异常对象?

Convert.ToBoolean 和 Boolean.Parse 不接受 0 和 1

我不了解应用程序域

.NET 的 String.Normalize 有什么作用?

哪个密码字符在 winforms 文本框中显示黑点 (•)?

在关闭警告中访问 foreach 变量

是否可以在 XP 上运行 .NET 4.5 应用程序?

清除文件内容

如何使用 DateTime 指定一天中的最晚时间

如果选中,则更改列表框项的 WPF DataTemplate

在 C#/.NET 中合并两个图像

Dictionary.Add 与 Dictionary[key]=value 的区别

如何使用 XmlSerializer 将字符串序列化为 CDATA?