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

use*_*012 3 c# arrays initialization

以下代码给出了错误:

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望值包含a,b和c.

我也试过像这样在构造函数之外初始化数组.

private int[] values = {a, b, c};
Run Code Online (Sandbox Code Playgroud)

并在构造函数内完全初始化它,如下所示:

int[] values = {a, b, c};
Run Code Online (Sandbox Code Playgroud)

但这些都没有.

Ree*_*sey 5

数组是一个对象,需要您明确地使用new它们来构造它们.

您可以使用:

values = new int[] {a, b, c};
Run Code Online (Sandbox Code Playgroud)

或者更短的语法:

values = new[] {a, b, c};
Run Code Online (Sandbox Code Playgroud)

另外,如果您在一个语句中编写数组声明和初始化,您实际上可以像编写它们一样编写它们:

int[] values2 = { a, b, c};
Run Code Online (Sandbox Code Playgroud)

但是,由于您已values声明为字段,因此在值初始化的构造函数中不起作用,因为您要从声明中单独初始化.

  • 但这有效,也是构造函数中的一个数组:`int [] values2 = {1,2,3};`.为什么它适用于局部变量? (2认同)