C#更优雅替代foreach-search
发布时间:2020-12-16 00:19:37 所属栏目:百科 来源:网络整理
导读:以下是类中方法的全部内容: 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;} 我显
以下是类中方法的全部内容:
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; } 我显然已经更改了名称,因此假设FooInfo是必需的,Name不能简单地成为类Foo的属性. 有没有更优雅的方法来编写这种方法?我对C#不是很熟悉,但我觉得有一种扩展方法可以将这种方法变成一个2-liner. 注意我正在寻找可读性,这不是减少行数的竞赛.我只是认为如果C#有一种方法可以在一行中搜索命名的Foo,那么该方法会更加清晰. (我正在使用C#3.5) 解决方法
return storedFoos.FirstOrDefault(f => name == f.FooInfo.Name);
您需要确保您使用的是System.Linq. 顺便说一下,C#会覆盖字符串的==运算符,因此通常更容易使用==而不是.Equals(更具可读性和惯用的C#). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |