我有一个“exampleClass”,它有一个集合“exampleCollection”。 如果exampleClass.ExampleCollection.Count = 0,则为exampleClass.ExampleCollection.Select(.... 那个查询会产生错误吗?
我正在使用linq使用c# 谢谢!
答案 0 :(得分:1)
如果
exampleClass.ExampleCollection.Count() == 0
,exampleClass.ExampleCollection.Select(....)
会产生错误吗?
不,它只会产生一个空的IEnumerable<T>
。 First()
和Last()
会产生错误,但不会产生Select()
。
如果exampleClass.ExampleCollection
为null
,那么将获得NullReferenceException
。
答案 1 :(得分:1)
不,您只会收到一个空的IEnumerable<T>
,更具体的是WhereSelectListIterator<T, bool>
。
但有趣的是,如果集合为null,则会抛出错误,但在扩展方法 Select
内。行为是不同的,因为Select方法不是您的集合的实例方法,它是一个扩展方法,如下所示:
IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
使用扩展方法,您的对象作为参数传递给静态方法(扩展),因此NullRererenceException可能或可能不会被抛入其中(取决于内部实现)。在Select方法的情况下,