当前位置: 首页 > 知识库问答 >
问题:

对已是列表的对象使用ToList()方法

呼延承平
2023-03-14

在已经是列表的对象上使用ToList()方法:

  1. 它会创建一个新列表吗?
  2. 以性能方式:其复杂性仍将为O(n)或更低(因为它已经是一个列表)?

共有2个答案

贡可人
2023-03-14

它很简单,但需要一些澄清。

>

  • 是的。它将创建新的列表实例。

    现在要创建新列表时。它将复制其中的所有项。如果它是valuetype,则复制实际值,如果它是引用类型,则复制该引用。它是O(n)。

      class Program
     {
         static async Task Main(string[] args)
         {
             //Value Type
             List<int> valueTypeitems = new List<int>();
             valueTypeitems.Add(1);
             valueTypeitems.Add(2);
    
             var newlist = valueTypeitems.ToList();
             valueTypeitems[0] = 3; // This will only reflect in first list.
             valueTypeitems.ForEach(cc => Console.WriteLine(cc));
             newlist.ForEach(cc => Console.WriteLine(cc));
    
             //Reference type
             List<Test> refItems = new List<Test>();
             refItems.Add(new Test() { Value = 1 });
             refItems.Add(new Test() { Value = 2 });
    
             var newrefList = refItems.ToList();
             refItems.ForEach(cc => Console.WriteLine(cc.Value));
             newrefList.ForEach(cc => Console.WriteLine(cc.Value));
             refItems[0].Value = 10; //This reflect in both list. As object is same but you change value.
    
             refItems.ForEach(cc => Console.WriteLine(cc.Value));
             newrefList.ForEach(cc => Console.WriteLine(cc.Value));
    
             //if you actually change ref in one list then it will not reflect
             refItems[0] = new Test() { Value = 30 };
             refItems.ForEach(cc => Console.WriteLine(cc.Value));
             newrefList.ForEach(cc => Console.WriteLine(cc.Value));
             Console.ReadLine();
         }
    
         public class Test
         {
             public int Value { get; set; }
         }
     }
    

  • 殳宸
    2023-03-14
    1. 它将创建一个新列表。
    2. 它将使用array.copyTo在内部复制元素,后者是(从文档中)O(n)

    您可以在这里看到list的构造函数的代码(这就是我们所说的)

     类似资料:
    • 我在Deck类中创建一个问题对象列表。我读取Json文件并将其传递给String,然后简单地使用Gson创建对象列表。但那不起作用:/你有谢谢你的主意吗。这是我的Json文件: 这是我的问题构造器: 这是我的甲板建造师: 这是我的主要代码: res1是我以字符串格式获得的Json文件,因此res2应该包含一个与Json文件相关的对象列表,但列表中没有任何内容。

    • 我一直在使用页面对象gem,当我试图使用

    • 我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?

    • 我有一个sql select查询,它只从数据库中检索单个列(组)(即),我在对象数组列表中接收上面列表的结果 , 理想情况下,结果应该包含一个对象数组列表,但是当我检查时,结果的第0个索引包含String object而不是object数组。 但是,如果我使用多个列(假设在查询的select子句中有2个列),我可以看到结果的第0个索引作为对象数组,即 即使查询的select子句中只提到一列,如何获

    • 问题内容: 我有看起来像下面的XML: 我有一个如下的ObjectList类: 还有一个对象类,如下所示: 当我尝试使用以下代码将xml解组为和对象时: 我收到以下错误: javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“ ObjectList”)。期望的元素是<{} Object>,<{} objectList> 编辑: 我只是注意到几个问题,我