IEnumerable 对象是否需要进行 null 检查?
var selectedRows = from drow in ugTable.Rows
.Cast<Infragistics.Win.UltraWinGrid.UltraGridRow>()
.Where(drow => drow != null && drow.Selected)
select drow;
if(selectedRows.Count()==1){//do something with selected rows}
从上面的语句中,我是否需要检查 selectedRows 变量的 Null ? selectedRows 是一个 IEnumerable 变量。
var selectedRows = from drow in ugTable.Rows
.Cast<Infragistics.Win.UltraWinGrid.UltraGridRow>()
.Where(drow => drow != null && drow.Selected)
select drow;
if(selectedRows.Count()==1){//do something with selected rows}
From the above statement, do i need to check Null for the selectedRows variable? selectedRows is an IEnumerable variable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您不需要检查
selectedRows
是否为null
。返回的IEnumerable<>
可能为空,但绝不会为null
。顺便说一句,我建议您通过编写以下内容来简化代码:
哪个更短且等效。
You do not need to check if
selectedRows
isnull
. The returnedIEnumerable<>
might be empty, but it will never benull
.As an aside, I'd suggest you simplify your code by writing:
Which is shorter and equivalent.
如果 where 没有匹配项,LINQ 查询将返回一个空列表(0 项)。
因此,无需检查
null
。The LINQ query will return an empty list (0 items), if there are no matches on the where.
So, no need to check for
null
.在您的示例中,您可以使用扩展方法。但是,如果您要实现自己的返回 IEnumerable 的方法,则答案取决于您返回结果的方式。
以下方法返回一个空的枚举:
以下方法仅返回 null:
调用这些方法将给出以下结果:
因此,返回 IEnumerable 时要小心。尝试使用yield关键字并遵循正确的模式。
In your example you'll be fine using the extension method. But if you were to implement your own method that returned an IEnumerable, the answer depends on how you return your result.
The following method returns an empty enumerable:
The following method just returns null:
Calling these methods will give the following results:
So be careful when you return IEnumerable. Try to use the yield keyword and following the correct pattern.
我最初的感觉是不,你不会,但这肯定不会造成伤害。
我认为 Phil Haack 有一个有用的扩展方法,可以检查
IEnumerable
是否为 null 或为空....Any()
对于检查.Count() 是否为空
My initial feeling is no, you don't but it certainly can't hurt.
I have, from I think Phil Haack, a useful extension method that checks to see if an
IEnumerable
is null or empty....Any()
is much more efficient for checking if not empty than.Count()
Linq 不会返回 NULL 。如果您想检查某些数据是否存在,可以使用 Any()
Linq wont retrun NULL . If you want to check some data is there you can go with Any()