我的目標是將未知數量的整數坐標添加到集合中。雖然我可以將這些坐標添加到此串列中,但List<int[]> coordList = new List<int[]>();我無法檢查coordList.Contains(specifiedCoordinate).
這是我到目前為止:
List<int[]> coordList = new List<int[]>();
coordList.Add(new int[] {1, 3});
coordList.Add(new int[] {3, 6});
bool contains = coordList.Contains(new int[]{1, 3})
Console.WriteLine(contains);
但是,contains總是false即使我指定了我添加的相同值。我已嘗試ArrayList作為可能的替代方案,但結果與使用List.
如果有什么我不理解的地方,或者如果有其他選擇,我會全神貫注。
uj5u.com熱心網友回復:
看起來你想要:
bool contains = coordList.Any(a => a.SequenceEqual(new int[]{1, 3}));
SequenceEqual 檔案。
.Any和.SequenceEqual是System.Linq命名空間提供的擴展方法。您可能需要確保您using System.Linq;在代碼檔案的頂部擁有以完成這項作業。
uj5u.com熱心網友回復:
如果您使用值元組,您將免費獲得值比較,代碼也會變得更整潔:
var coordList = new List<(int x, int y)>();
coordList.Add((1, 3));
coordList.Add((3, 6));
//contains is now true because
//value tuples do value comparison in their 'Equals' override
bool contains = coordList.Contains((1, 3));
Console.WriteLine(contains);
uj5u.com熱心網友回復:
來自 OP
回答
因此,我根據 Llama 的建議創建了一個新函式:
static bool ContainsCoordinate(int[] coords, List<int[]> coordList) {
bool contains = coordList.Any(a => a.SequenceEqual(coords));
return contains;
}
這只是一種魅力。
我還要感謝 Ron Beyer 幫助我更多地了解物件宣告和實體化,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360847.html
