【问题标题】:Constructor does not pass initial array values to the method构造函数不将初始数组值传递给方法
【发布时间】:2021-02-07 19:06:17
【问题描述】:

我想解释一下我做错了什么。我粘贴了两个代码块;一个工作另一个不工作。第一个代码有效,因为初始值被传递到方法“MyGreatMethod”中,我可以看到它们:

 public class Something
    {
        private int [] MyArray = new int [3];

        public Something()
        {
            MyArray[0] = 100;
            MyArray[1] = 200;
            MyArray[2] = 300;
        }

        public void MyGreatMethod()
        {
            Console.WriteLine(MyArray[0] / 3);
            Console.WriteLine(MyArray[1] / 3);
            Console.WriteLine(MyArray[2] / 3);
        }

    }

但是如果我以这种方式将值放入“MyArray”(见下文),“MyGreatMethod”方法会从构造函数中获取 NULL,我做错了什么?请帮忙..

public class Something
    {
        private int [] MyArray = new int [3];

        public Something()
        {
            int[] MyArray = {100,200,300};
        }

        public void MyGreatMethod()
        {
            Console.WriteLine(MyArray[0] / 3);
            Console.WriteLine(MyArray[1] / 3);
            Console.WriteLine(MyArray[2] / 3);
        }

    }

【问题讨论】:

  • 是局部变量。尝试删除 int[]
  • 这是因为在第二个 sn-p 中,您正在初始化一个名为 MyArray局部变量,而不是名为 MyArray实例字段

标签: c# arrays class methods constructor


【解决方案1】:

它是null,因为您尚未将值分配给MyArray。相反,您创建了一个 new 数组并将其分配给具有相同名称的 局部变量

您应该从构造函数中删除int[]

public class Something
{
    private int [] MyArray = new int [3];

    public Something()
    {
        MyArray = {100,200,300};
    }

    public void MyGreatMethod()
    {
        Console.WriteLine(MyArray[0] / 3);
        Console.WriteLine(MyArray[1] / 3);
        Console.WriteLine(MyArray[2] / 3);
    }
}

【讨论】:

    【解决方案2】:

    如果要在声明后为特定数组设置值,则需要使用 new 关键字:

    public class Something
    {
        private int[] MyArray;
    
        public Something()
        {
            MyArray = new int[3] { 100, 200, 300 };
        }
    
        public void MyGreatMethod()
        {
            Console.WriteLine(MyArray[0] / 3);
            Console.WriteLine(MyArray[1] / 3);
            Console.WriteLine(MyArray[2] / 3);
        }
    
    }
    

    【讨论】:

    • 谢谢!就是这样!现在正在工作!可能会问什么时候应该使用“this”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多