代码之家  ›  专栏  ›  技术社区  ›  Srikar Doddi

在c语言中这个代码的等价物是什么#

  •  4
  • Srikar Doddi  · 技术社区  · 14 年前
    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);           
              }};
    
    5 回复  |  直到 14 年前
        1
  •  17
  •   Ani    14 年前

    C#3.0或更高,

    var constants = new List<double> { 1.4, 0.4, 1.2, 2.4, 4.2, 5D, 6D, 7D };
    

    constants implicitly typed List<double> 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 s、 但我更喜欢用数字文字来表达。

    ReadOnlyCollection<T> . 例如:

    var constants = new List<double>{1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7}.AsReadOnly();
    
        2
  •  7
  •   SLaks    14 年前

    这样地:

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

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

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

    这不完全一样。

    第一行由编译器转换为 Add 名单上的电话。

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

        3
  •  4
  •   Brian Agnew    14 年前

    new List<Double>(){ 1.4, 0.4 } 
    

    注意,上面的Java代码实际上创建了 ,然后初始化它。你通常不必担心这个,但是值得知道(它将有一个隐含的 this 指针,序列化时会引起头痛)

        4
  •  2
  •   hackerhasid    14 年前
    List<double> constants = new List<double>() { 1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7 };
    
        5
  •  1
  •   Brian Agnew    14 年前

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

    List<Double> constants = Arrays.asList(new Double[]{1.4,0.4,1.2,2.4,4.2,5.0,6.0,7.0});