C# 返回类型类中出现错误

C# 返回类型类中出现错误,c#,C#,我是C#新手,正在使用数组和类测试返回类型。但不知何故,我在尝试返回类的对象时被卡住了。在notWhole类中,我试图将数组作为参数传递给构造函数,但不知何故,编译器抛出了一个错误,称“字段初始值设定项无法初始化非静态字段成员” 我认为错误信息足以确定原因,即 字段初始值设定项不能引用非静态字段、方法或 财产 所以你可以这样尝试: Whole w1 = new Whole(new int[] { 1, 2, 3 }); 或者像这样: static int[] arr = new int[] {

我是C#新手,正在使用数组和类测试返回类型。但不知何故,我在尝试返回类的对象时被卡住了。在notWhole类中,我试图将数组作为参数传递给构造函数,但不知何故,编译器抛出了一个错误,称“字段初始值设定项无法初始化非静态字段成员”


我认为错误信息足以确定原因,即

字段初始值设定项不能引用非静态字段、方法或 财产

所以你可以这样尝试:

Whole w1 = new Whole(new int[] { 1, 2, 3 });
或者像这样:

static int[] arr = new int[] { 1, 2, 3 };
Whole w1 = new Whole(arr);
C#不允许您访问初始化器部分中的其他字段或方法 您可以使用构造函数来实现您的目的。 另外,如果您使用静态数组,那么您可能会产生一些副作用,因为您的所有实例都将引用相同的静态数组,并且您的一个完整实例中的更改将在所有其他实例中“可用”

class notWhole
{
    Whole w1;
    public notWhole()
    {
        int[] arr = new int[] { 1, 2, 3 };
        w1 = new Whole(arr); 
    }

    public Whole wow()
    {
        return w1;
    }
}

我很幸运,这个解决方案是可行的,但是你能解释一下,为什么我的版本不能正常工作吗?@saurabchooks:因为你不能使用一个实例变量来初始化另一个实例变量使用静态帮助如何?数组仍然是一个用于初始化类的引用变量。@SaurabCooks:因为它们独立于实例,您知道不使用实例变量初始化另一个实例变量的原因吗?如果我使用整w1=新整(arr);在构造函数中,编译器抛出了一个错误,为什么?您是使用了整w1=新整(arr)还是仅使用了w1=新整(arr)?在第一个变量中,局部变量w1和字段w1之间可能存在名称冲突,或者如果您的目的只是返回一个新的完整实例,而不保留对它的引用,那么您就不需要;不需要将w1定义为字段。只需在wow方法中实例化一个新的整变量并返回它。
class notWhole
{
    Whole w1;
    public notWhole()
    {
        int[] arr = new int[] { 1, 2, 3 };
        w1 = new Whole(arr); 
    }

    public Whole wow()
    {
        return w1;
    }
}