foreach design idea
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Why does .NET foreach loop throw NullRefException when collection is null?
如果目标集合为空,则foreach迭代器将引发异常。
例子:
1 2 | List<string> names = null; foreach(var name in names) { /* throws exception */ } |
它背后的设计理念是什么?不通过循环迭代来代替.NET框架引发异常是否很方便?
通常,空集合表示集合无效。我希望一个空集合不会迭代,而是一个空集合异常,因为我期望一个有效的集合。
为什么.NET foreach循环在集合为空时引发NullRefException?
我认为背后没有任何想法。正如您所知,foreach是在很晚的时候添加的,然后是枚举器,foreach是建立在它之上的(*)。
(*)
1 2 3 4 5 | var enumerator = someList.GetEnumerator(); while (enumerator.MoveNext()) { //do something with enumerator.Current } |
不能在空的东西上运行