在我的项目中,我有一个MyClass
which implements IMyClass
。IMyClass
我需要通过转换其他项目的列表来返回一个列表。为简单起见,假设我可以MyClass
通过将另一个项目传递给它的构造函数来创建一个,即new MyClass(item)
.
考虑以下两行,它们(据我所知)产生相同的结果:
var option1 = items.Select(item => new MyClass(item)).Cast<IMyClass>().ToList()
var option2 = items.Select(item => new MyClass(item) as IMyClass).ToList()
在我看来,选项 #1 需要双重枚举,一次将所有项目投射到我的界面,一次生成列表。如果我是对的,那么选项#2 会更聪明。但是,我从未见过使用选项#2 之类的代码,而且我倾向于认为我不够聪明,无法提出其他 C# 社区没有的聪明方法。
在旁注中,我认为选项#2 在美学上更令人愉悦,但这只是我。
我的问题是:我的选项#2 是否像我认为的那样是一个更好的主意?是否有任何我遗漏的问题或我想坚持使用选项#1 的其他原因?或者,当我完全错过了一个更聪明的第三个想法时,我是否在比较两个愚蠢的想法?