簡體   English   中英

C#對另一個列表元素的引用列表

[英]C# List of references to another list elements

我想用對注釋器列表元素的引用來構建子列表(我只需要少數幾個滿足條件的元素)。

我如何嘗試做到這一點:

        List<int> mainList = new List<int>();
        List<int> subList = new List<int>();
        mainList.Add(5);
        subList.Add(mainList[0]); //case 1
        //subList[0] = mainList[0]; //case 2
        Console.WriteLine("{0}", mainList[0]);
        Console.WriteLine("{0}", subList[0]);
        subList[0]++;
        Console.WriteLine("{0}", mainList[0]);
        Console.WriteLine("{0}", subList[0]);
        mainList[0]+=2;
        Console.WriteLine("{0}", mainList[0]);
        Console.WriteLine("{0}", subList[0]);

在第一種情況下,我得到的是副本而不是引用,因為控制台輸出是:

5
5
5
6
7
6

在第二種情況下,我得到了ArgumentOutOfRangeException,因為未初始化subList[0] 那么,我該怎么做呢?

另外,根據速度/內存的使用情況,是否最好保留mainList的inedexe的List<int>而不是引用?

感謝@ManIkWeet和@Florian,我找到了解決方案:

        public class TestClass{
           public int value;
        }

        ...

        List<TestClass> mainList = new List<TestClass>();
        List<TestClass> subList = new List<TestClass>();
        mainList.Add(new TestClass { value = 5 });
        subList.Add(mainList[0]);
        Console.WriteLine("{0}", mainList[0].value);
        Console.WriteLine("{0}", subList[0].value);
        subList[0].value++;
        Console.WriteLine("{0}", mainList[0].value);
        Console.WriteLine("{0}", subList[0].value);
        mainList[0].value+=2;
        Console.WriteLine("{0}", mainList[0].value);
        Console.WriteLine("{0}", subList[0].value);

輸出為:

5
5
6
6
8
8

情況2:當list不包含任何元素時,由於在子列表中沒有分配給列表項的內存,因此無法在list中分配值。

您正在獲取System.ArgumentOutOfRangeException,因為您的列表索引小於0或索引等於或大於列表計數

當列表中有項目時,可以通過索引分配值

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM