以下是类中方法的全部内容:
public Foo GetFooByInfoName(string name)
{
Debug.Assert(name != null, "name is not an optional argument");
foreach (Foo f in storedFoos.Values)
{
if (name.Equals(f.FooInfo.Name))
{
return f;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我显然已经更改了名称,因此假设FooInfo是必需的,Name不能简单地成为类Foo的属性.
有没有更优雅的方法来编写这种方法?我对C#不是很熟悉,但我觉得有一种扩展方法可以将这种方法变成一个2-liner.
注意我正在寻找可读性,这不是减少行数的竞赛.我只是认为如果C#有办法Foo在一行中搜索命名,那么该方法会更清楚.
(我正在使用C#3.5)
Eri*_*res 12
return storedFoos.FirstOrDefault(f => name == f.FooInfo.Name);
你需要确保你的using System.Linq.
顺便说一下,C#会覆盖字符串的==运算符,所以通常更容易使用==而不是.Equals(更具可读性和惯用的C#).