构造函数不将初始数组值传递给方法

Posted

技术标签:

【中文标题】构造函数不将初始数组值传递给方法【英文标题】: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实例字段 【参考方案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”

以上是关于构造函数不将初始数组值传递给方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将鉴别器传递给构造函数的情况下映射 Enumeration 类?

无法从构造函数中将数组值传递给向量

java类中构造函数中:数组怎样初始化

拷贝构造函数

将对象数组传递给构造函数[重复]

java中创建对象了,显示初始化值和构造函数初始化对象的区别?先后执行顺序是啥?