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