2015-05-24 24 views
1

我有一個名單>C# - 獲取列表<byte>參考指標

List<List<Byte>> bytes = new List<List<Byte>>() 
{ 
new List<Byte> {1, 1, 2, 3, 4}, // index 0 is original 
new List<Byte> {0, 0, 2, 4, 1}, 
new List<Byte> {1, 2, 2, 1, 1}, 
new List<Byte> {1, 0, 2, 2, 2} 
}; 

和第一清單原件。然後我排序我的列表,我必須找到我的原始列表索引。

bytes: 
[0] = {0, 0, 2, 4, 1} 
[1] = {1, 0, 2, 2, 2} 
[2] = {1, 1, 2, 3, 4} // here is that index 
[3] = {1, 2, 2, 1, 1} 

一人提議我就先不排序列表,然後排序列表使用引用和使用ReferenceEqual,但這並不爲我工作。我通過設置引用做錯了什麼,或者它在List上不起作用?我怎麼能得到排序數組中的原始索引? P.S我正在用OrderBy和IComparer進行排序。

這是我嘗試做參考:

List<byte> reference = new List<byte>(bytes[0]); 

回答

2

這是我嘗試做參考:

List<byte> reference = new List<byte>(bytes[0]); 

這不是做一個參考的正確方法,因爲你通過調用List<byte>的構造函數來製作副本。 bytes中不存在bytes[0]的副本,因此您無法通過檢查參考平等來找到它。

這是你應該怎麼做:

List<byte> reference = bytes[0]; 

現在reference引用列表是在零位排序之前,所以你應該能夠找到通過參考平等問題的指標。

+0

你說得對,我嘗試過的原因,因爲我看到某個地方它是如何處理對象的,我認爲使用列表的方式是一樣的。非常感謝您的快速和正確的答案! :) – GrandaS