【发布时间】:2016-03-06 22:05:56
【问题描述】:
在将其标记为重复之前,请考虑以下短程序:
static void Main()
{
var expected = new List<long[]> { new[] { Convert.ToInt64(1), Convert.ToInt64(999999) } };
var actual = DoSomething();
if (!actual.SequenceEqual(expected)) throw new Exception();
}
static IEnumerable<long[]> DoSomething()
{
yield return new[] { Convert.ToInt64(1), Convert.ToInt64(999999) };
}
我有一个方法可以返回一个 long 类型的数组序列。为了测试它,我编写了一些类似于Main 中的测试代码。
但是我得到了例外,但我不知道为什么。预期的序列不应该与实际返回的序列相媲美还是我错过了什么?
在我看来,方法和 epxected 都只包含一个包含 long 类型数组的单个元素,不是吗?
编辑:那么我如何实现不获取异常含义来比较枚举中的元素以返回相等?
【问题讨论】:
-
有什么异常?
-
序列中的元素是
long[]。比较将是数组引用的比较,这确实是不同的。数组的元素(在序列中)不会被比较。 -
您应该实现自己的比较器,并且应该将此比较器的实例作为第二个参数传递给 SequenceCompare。
标签: c# ienumerable yield