编写 List.Add(new List<T>(){element_1, elemeny_2}) 比单独添加每个元素慢吗? [已关闭]

问题描述 投票:0回答:1

编译器是否创建两个元素的临时列表,或者它是否理解这是试图使代码更短并避免有时大量的.Add单个元素行(在几何工作中非常频繁。)

一个等效的问题:定义和使用以下类型的扩展方法值得吗(在它不影响性能的意义上)?

public static void Add<T>(this List<T> list, T element_1, T element_2)
{
    list.Add(element_1);
    list.Add(element_2);
}

在使用简单结构时,创建临时列表来缩短代码似乎不会影响性能。

c# list performance compilation
1个回答
1
投票

我认为您正在要求新的列表 {obj1, obj2}。 这是dnspy的反编译结果,所以我认为它们是相同的。

来源:

static void Main(string[] args)
{


    var list1 = new List<string>();

    list1.Add("a");

    list1.Add("b");

    var list2 = new List<string>() { "c", "d" };


}

反编译

// ConsoleApp1.Program
// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
private static void Main(string[] args)
{
    List<string> list = new List<string>();
    list.Add("a");
    list.Add("b");
    List<string> list2 = new List<string>();
    list2.Add("c");
    list2.Add("d");
}

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.