我有以下返回错误的代码:
private static bool AreRowsEqual(string[] fieldNames, DataRow row1, DataRow row2)
{
for (var i = 0; i <= fieldNames.Length - 1; i++)
{
if (row1[fieldNames[i]] != row2[fieldNames[i]])
{
return false;
}
}
return true;
}
这是令人惊讶的,因为只有一个 long 类型的字段被比较,并且每个字段的值都根据即时窗口输出匹配:
?row1[fieldNames[i]];
34
?row2[fieldNames[i]];
34
?row1[fieldNames[i]].GetType();
{Name = "Int64" FullName = "System.Int64"}
[System.RuntimeType]: {Name = "Int64" FullName = "System.Int64"}
? row2[fieldNames[i]].GetType();
{Name = "Int64" FullName = "System.Int64"}
[System.RuntimeType]: {Name = "Int64" FullName = "System.Int64"}
我在这里忽略了什么?在比较整数的值时,我使用 != 和 == "everywhere"。