我有以下代码:
foreach (var b in userNames.Select(a => new User()))
{
...
}
这很好用,因为它给了我所有“新鲜”的用户对象,但是代码分析抱怨我不应该创建未使用的局部变量,所以我的问题是,有没有一种方法可以忽略参数(类似于Haskell中的“_”)。
PS:我的例子可能不是最好的。对此我很抱歉。
谢谢!
更新1
我得到了以下代码分析错误:[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Performance”,“CA1804:RemoveUnusedLocals”,MessageId =“a”),System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Performance”,“CA1804:RemoveUnusedLocals”,MessageId =“B”)]
5条答案
按热度按时间gab6jxml1#
_
是C#
中完全有效的变量名。所以写作是完全有效的代码。这取决于您的分析规则是否接受此类情况。
然而,你的代码确实很可疑:您将一个用户名集合Map到一个用户集合,但没有指定两者之间的直接关系:也许你想写这样的东西:
1zmg4dgp2#
如果您关心数量,并且需要linq,请将其重写为
但是,它可能看起来很丑,根据你如何看待它。
bd1hkmkf3#
要创建给定大小的对象集合,只需使用原始集合的长度。
但最好是你自己的辅助方法
然后使用
kq4fsx7k4#
我相信有一个有效的情况下,你会想忽略这样的论点,但这似乎不是其中之一。如果你为N个用户名创建N个
User
对象,你肯定想把它们耦合在一起吗?这样就不会有任何未使用的参数。
但问题是,你为什么不这样做:
在我看来,您在这里使用
.Select()
没有任何意义。lh80um4z5#
Select
在调用它的集合上执行投影,对每个元素执行指定的操作,并在另一个集合中返回转换后的结果。如果不需要对lambda元素执行任何操作,最好直接创建一个User
对象数组。回答你的编辑,正如我上面所说,你可以简单地这样做:
至于初始化,你可以这样做: