我是C#的新手,正在使用数组和类测试返回类型。但不知怎的,我在试图返回一个类的对象时被卡住了。在类notWhole中,我尝试将数组作为参数传递给构造函数,但不知何故编译器抛出错误,说“字段初始化程序无法初始化非静态字段成员”。
class Whole
{
int[] Arr = new int[3];
public Whole()
{
}
public Whole(int[] arr)
{
Arr = arr;
}
public int[] Spit()
{
return Arr;
}
}
class notWhole
{
int[] arr = new int[] { 1, 2, 3 };
Whole w1 = new Whole(arr); //ERROR: can't pass an array(arr) as an argument
public Whole wow()
{
return w1;
}
}
答案 0 :(得分:1)
我认为错误信息足以确定原因,即。,
字段初始值设定项不能引用非静态字段,方法或 属性
所以你可以尝试这样:
Whole w1 = new Whole(new int[] { 1, 2, 3 });
或者像这样:
static int[] arr = new int[] { 1, 2, 3 };
Whole w1 = new Whole(arr);
答案 1 :(得分:1)
C#不允许您在初始化程序部分访问其他字段或方法 您可以为您的目的使用构造函数。 此外,如果您使用静态,那么您可以创建一些副作用,因为所有的整个实例都将引用相同的静态数组,并且其中一个实例中的更改将是"可用"在所有其他人。
class notWhole
{
Whole w1;
public notWhole()
{
int[] arr = new int[] { 1, 2, 3 };
w1 = new Whole(arr);
}
public Whole wow()
{
return w1;
}
}