编译器是否创建两个元素的临时列表,或者它是否理解这是试图使代码更短并避免有时大量的.Add单个元素行(在几何工作中非常频繁。)
一个等效的问题:定义和使用以下类型的扩展方法值得吗(在它不影响性能的意义上)?
public static void Add<T>(this List<T> list, T element_1, T element_2)
{
list.Add(element_1);
list.Add(element_2);
}
在使用简单结构时,创建临时列表来缩短代码似乎不会影响性能。
我认为您正在要求新的列表 {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");
}