初始化 class 中的列表以获得函数的可用性
Initialization of list in class for availability from functions
我想用 class 中的集合初始值设定项来初始化列表,以使其可供单独的函数使用:
public Form1()
{
InitializeComponent();
}
List<string> list = new List<string>() {"one", "two", "three"};
带括号和不带括号的列表有什么区别,哪种适合这种情况:
List<string> list = new List<string> {"one", "two", "three"};
进入()
括号(构造函数)你可以传递一些特定的参数,比如列表的初始大小等。
使用 { }
括号时,您只需使用一些起始值初始化列表。
在您的情况下,使用哪个都没有区别,两者的效果与使用默认构造函数调用的效果相似。
通话中
List<string> list = new List<string> {"one", "two", "three"};
只是一个 shorthand 并隐式调用默认构造函数:
List<string> list = new List<string>() {"one", "two", "three"};
又看生成的IL代码,一样的:
List<string> list = new List<string>() {"one"};
List<string> list2 = new List<string> {"one"};
变为:
IL_0001: newobj instance void class [mscorlib]System.Collections.Generic.List`1<string>::.ctor()
IL_0006: stloc.2
IL_0007: ldloc.2
IL_0008: ldstr "one"
IL_000d: callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
IL_0012: nop
IL_0013: ldloc.2
IL_0014: stloc.0
IL_0015: newobj instance void class [mscorlib]System.Collections.Generic.List`1<string>::.ctor()
IL_001a: stloc.3
IL_001b: ldloc.3
IL_001c: ldstr "one"
IL_0021: callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
IL_0026: nop
IL_0027: ldloc.3
IL_0028: stloc.1
你看到 {}
符号只是语法糖,它首先调用默认构造函数,然后使用 List<T>.Add()
方法将每个元素添加到 {}
中。所以你的代码相当于:
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
我想用 class 中的集合初始值设定项来初始化列表,以使其可供单独的函数使用:
public Form1()
{
InitializeComponent();
}
List<string> list = new List<string>() {"one", "two", "three"};
带括号和不带括号的列表有什么区别,哪种适合这种情况:
List<string> list = new List<string> {"one", "two", "three"};
进入()
括号(构造函数)你可以传递一些特定的参数,比如列表的初始大小等。
使用 { }
括号时,您只需使用一些起始值初始化列表。
在您的情况下,使用哪个都没有区别,两者的效果与使用默认构造函数调用的效果相似。
通话中
List<string> list = new List<string> {"one", "two", "three"};
只是一个 shorthand 并隐式调用默认构造函数:
List<string> list = new List<string>() {"one", "two", "three"};
又看生成的IL代码,一样的:
List<string> list = new List<string>() {"one"};
List<string> list2 = new List<string> {"one"};
变为:
IL_0001: newobj instance void class [mscorlib]System.Collections.Generic.List`1<string>::.ctor()
IL_0006: stloc.2
IL_0007: ldloc.2
IL_0008: ldstr "one"
IL_000d: callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
IL_0012: nop
IL_0013: ldloc.2
IL_0014: stloc.0
IL_0015: newobj instance void class [mscorlib]System.Collections.Generic.List`1<string>::.ctor()
IL_001a: stloc.3
IL_001b: ldloc.3
IL_001c: ldstr "one"
IL_0021: callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
IL_0026: nop
IL_0027: ldloc.3
IL_0028: stloc.1
你看到 {}
符号只是语法糖,它首先调用默认构造函数,然后使用 List<T>.Add()
方法将每个元素添加到 {}
中。所以你的代码相当于:
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");