【发布时间】:2011-06-13 06:55:39
【问题描述】:
在使用 C# 编程的不同时间,我发现自己处于想要定义 lambda(或匿名委托)并在同一行中调用它的情况。在这一点上,我能够做到这一点的“最干净”的方式是这样的:
bool foo_equals_bar = new Func<String, bool>(str => str.Equals("foo"))("bar");
我希望能够写出类似以下的东西:
bool foo_equals_bar = (str => str.Equals("foo"))("bar");
不幸的是,这似乎不起作用。我很想知道:
- 上面这行代码有没有更简单的写法?
- 从
(str => str.Equals("foo"))返回的内容可以用于初始化Func<String, bool>,但不能像Func<String, bool>一样进行评估?
我应该指出我正在使用 C# 3 (VS2008),所以如果解决方案仅存在于 C# 4 中,请提及。 (我仍然想知道,即使我目前无法获得解决方案)。
谢谢
【问题讨论】:
-
这与
"bar".Equals("foo")有何不同?我知道这可能是简化的,但我没有看到您无法进行相同翻译的情况。 -
我并不是想找到一种比较字符串的聪明方法,它只是一个简单的例子来展示原理(不幸的是,语法不正确)