.Net Arrays Compare
今天碰到了一個問題需要判斷兩個 int array 的值是否相同
首先先準備資料,這邊 s 與 b 相同,p與其他都不相同
var s = new int[] { 1, 3, 5, 7 };
var p = new int[] { 2, 4, 6, 8 };
var b = new int[] { 1, 3, 5, 7 };
最直觀的作法就是使用 For 迴圈來處理,首先檢查長度是否為相同再來一一檢查元素是否相同
private bool forloop(int[] first, int[] second)
{
if (first.Length != second.Length)
{
return false;
}
for (int i = 0; i < first.Length; i++)
{
if (first[i] != second[i])
{
return false;
}
}
return true;
}
forloop(s,p);
forloop(s,b);
False
True
另外可以使用擴充方法 SequenceEqual
來進行順序檢查
s.SequenceEqual(p);
s.SequenceEqual(b);
False
True
也可以使用 Enumerable 提供的 SequenceEqual
方法,可以檢查各種 IEnumerable 型別
Enumerable.SequenceEqual(s, p)
Enumerable.SequenceEqual(s, b)
這邊需要注意的是如果使用運算符 ==
是進行參考型別的檢查,並不是針對內部資料進行檢查
s == p;
s == b;
False
False
也可以使用 Enumerable 提供的 ReferenceEquals
方法
Enumerable.ReferenceEquals(s, p);
Enumerable.ReferenceEquals(s, b);
False
False
Summary
今天學習了 .Net 提供的比較 IEnumerable 型別的方法,基本上可以直接使用 Enumerable 提供的方法
如果是要比對資料可以使用 SequenceEqual 需要比較地址可以使用 ReferenceEquals 運算符號 ==