Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这段代码在c中的等价物是什么# List constants=new ArrayList(){{ 增加(1.4); 增加(0.4); 增加(1.2); 增加(2.4); 增加(4.2); 增加(5); 增加(6.0); 增加(7.0); }};_C#_Java - Fatal编程技术网

C# 这段代码在c中的等价物是什么# List constants=new ArrayList(){{ 增加(1.4); 增加(0.4); 增加(1.2); 增加(2.4); 增加(4.2); 增加(5); 增加(6.0); 增加(7.0); }};

C# 这段代码在c中的等价物是什么# List constants=new ArrayList(){{ 增加(1.4); 增加(0.4); 增加(1.2); 增加(2.4); 增加(4.2); 增加(5); 增加(6.0); 增加(7.0); }};,c#,java,C#,Java,在C#3.0或更高版本中 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);

在C#3.0或更高版本中

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);           
          }};
您可以省去
D
s,但我更喜欢用数字文本来表示

另一方面,如果这真的代表了一个未命名常量的列表,那么最好使用一个不可变的集合,例如。例如:

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);
var常量=新列表{1.4,0.4,1.2,2.4,4.2,5,6,7}.AsReadOnly();
List constants=new List(){1.4,0.4,1.2,2.4,4.2,5,6,7};
像这样:

List<double> constants = new List<double>() { 1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7 };
List常量=newlist(){1.4,0.4,…};
这使用了C#3.0中的一个新特性

如果仍在使用VS2005,则可以编写

List<Double> constants = new List<Double>() { 1.4, 0.4, ... };
List常量=新列表(新的双[]{1.4,0.4,…});
这是不完全一样的

编译器将第一行转换为列表上的一系列
Add
调用


第二行创建一个
double[]
数组,并将其传递给
List
构造函数,后者将其复制到列表中。

以上只是一个静态列表初始化,因此C中的等价物是:

List<Double> constants = new List<Double>(new double[] { 1.4, 0.4, ... });
newlist(){1.4,0.4}

请注意,上面的Java代码实际上创建了一个新的内部类,它是ArrayList的子类,然后对其进行初始化。您通常不必担心这一点,但值得知道(它将有一个隐式
this
指针,并且在序列化时会引起麻烦)

在Java中使用内部类可能不是最好的方法。你可能会想做类似的事情


List constants=Arrays.asList(新的Double[]{1.4,0.4,1.2,2.4,4.2,5.0,6.0,7.0})

你不需要做5D,它是推断出来的。@Yuriy:不,它不是推断出来的。它是隐式转换的。
List<Double> constants = new List<Double>() { 1.4, 0.4, ... };
List<Double> constants = new List<Double>(new double[] { 1.4, 0.4, ... });
new List<Double>(){ 1.4, 0.4 }