【问题标题】:C# - Getting List<byte> reference indexC# - 获取 List<byte> 参考索引
【发布时间】:2015-08-06 01:58:28
【问题描述】:

我有一个列表>

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}
};

第一个列表是原始的。然后我对我的 List 进行排序,我必须找到我原来的 List 索引。

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,但这对我不起作用。我通过设置参考做错了什么还是在列表上不起作用?如何在排序数组中获取原始索引? P.S 我正在使用 OrderBy 和 IComparer 进行排序。

这是我尝试参考的方式:

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

【问题讨论】:

    标签: linq list object reference compare


    【解决方案1】:

    这是我尝试参考的方式:

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

    这不是进行引用的正确方法,因为您通过调用List&lt;byte&gt; 的构造函数来进行复制。 bytes[0] 的副本在 bytes 中不存在,因此您无法通过检查引用相等性找到它。

    你应该这样做:

    List<byte> reference = bytes[0];
    

    现在reference 在排序前引用位置为零的列表,因此您应该能够使用引用相等来找到它的索引。

    【讨论】:

    • 你是对的,我尝试这样做的原因,因为我在某处看到它是如何处理对象的,我认为列表将是相同的方式。非常感谢您快速正确的回答! :)
    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2023-03-21
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多