我重新实施Enumerable.Zip
(我称之为Merge
)。它与原始版本相同,除非一个枚举器的MoveNext
在另一个之前返回false(表示序列的长度不同),它会抛出异常。
我的问题是:BCL扔到这里最合适的例外是什么? (我希望这能够模仿Enumerable
(LINQ)函数的其余部分。)
答案 0 :(得分:3)
我认为,因为你的第二个数组将是一个参数。所以
System.ArgumentOutOfRangeException
当(通常是数字)参数太大或太小时抛出的ArgumentException的子类。例如,将负数传递给只接受正值的函数时会抛出此值。
或者可能是
System.InvalidOperationException
当对象的状态不适合成功执行的方法时抛出,而不管任何特定的参数值。示例包括读取未打开的文件或从枚举数中获取下一个元素,其中基础列表已在迭代的中途进行了修改。