List<Double> constants = new ArrayList<Double>() {{
add(1.4);
add(0.4);
add(1.2);
add(2.4);
add(4.2);
add(5);
add(6.0);
add(7.0);
}};
答案 0 :(得分:17)
在C#3.0或更高版本中,
var constants = new List<double> { 1.4, 0.4, 1.2, 2.4, 4.2, 5D, 6D, 7D };
使用constants
关键字 List<double>
为implicitly typed至var
。使用collection-initializer语法初始化列表(通过将数字放在大括号中)。
这相当于(C#2.0或更高版本):
List<double> constants = new List<double>();
constants.Add(1.4);
constants.Add(0.4);
constants.Add(1.2);
constants.Add(2.4);
constants.Add(4.2);
constants.Add(5D);
constants.Add(6D);
constants.Add(7D);
你可以省略D
,但我更倾向于使用数字文字。
另一方面,如果这确实代表了一个未命名的常量列表,那么最好使用ReadOnlyCollection<T>
之类的不可变集合。例如:
var constants = new List<double>{1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7}.AsReadOnly();
答案 1 :(得分:7)
像这样:
List<Double> constants = new List<Double>() { 1.4, 0.4, ... };
这使用了C#3.0中的新功能。
如果你还在使用VS2005,你可以写
List<Double> constants = new List<Double>(new double[] { 1.4, 0.4, ... });
这不完全相同。
编译器将第一行转换为列表中的一系列Add
调用。
第二行创建一个double[]
数组并将其传递给List<T>
构造函数,然后将其复制到列表中。
答案 2 :(得分:4)
以上只是静态列表初始化,因此C#中的等价物将是:
new List<Double>(){ 1.4, 0.4 }
请注意,上面的Java代码实际上创建了一个新的内部类,它是ArrayList 的子类,然后将其初始化。你通常不必担心这一点,但值得知道(它会有一个隐含的this
指针,并在序列化时引起麻烦)
答案 3 :(得分:2)
List<double> constants = new List<double>() { 1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7 };
答案 4 :(得分:1)
使用内部类可能不是在Java中执行此操作的最佳方法。您可能想要做类似
的事情 List<Double> constants = Arrays.asList(new Double[]{1.4,0.4,1.2,2.4,4.2,5.0,6.0,7.0});