返回类型为Class时出错

时间:2017-03-10 04:41:57

标签: c#

我是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;
    }
}

2 个答案:

答案 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;
    }
}