在构造函数中初始化一个数组类变量

4
以下代码存在错误:
public class SomeClass
{
    private int a;
    private int b;
    private int c;
    private int[] values;

    public SomeClass()
    {
        a = 1;
        b = 2;
        c = 3;
        values = {a, b, c};
    }

    public static void Main()
    {
        SomeClass sc = new SomeClass();
    }

}

我希望values包含a、b和c。

我还尝试像这样在构造函数之外初始化数组。

private int[] values = {a, b, c};

像这样在构造函数中完全初始化:

int[] values = {a, b, c};

但是这些都不起作用。


1
缺少 new 关键字 - Omri Btian
1
数组是对象 - 你需要实例化一个新的。 - Vivek
3个回答

7

数组是一个对象,需要显式使用 new 来构建。

你可以使用:

values = new int[] {a, b, c};

或者更短的语法:
values = new[] {a, b, c};

顺便提一下,如果您正在同时声明和初始化数组,您实际上可以像您所做的那样编写它们:

int[] values2 = { a, b, c};

然而,由于您已经将 values 声明为一个字段,所以这在构造函数中将无法工作,因为您的初始化是与声明分开进行的。


2
但这个也可以在构造函数中作为数组使用:int[] values2 = { 1, 2, 3 };。为什么它对于局部变量有效呢? - Tim Schmelter

0

请尝试以下操作

int[] values = new int[]{a, b, c};

0

这样做可以:

values = new[] { a, b, c };

或者

values = new int[] { a, b, c };

更多阅读


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接