将数组从一行复制到一个数组对象中-“_numbersArray 永远不会分配给,并且始终具有其默认值 null”[关闭]
Posted
技术标签:
【中文标题】将数组从一行复制到一个数组对象中-“_numbersArray 永远不会分配给,并且始终具有其默认值 null”[关闭]【英文标题】:Copying an Array from a line, into an Array Object - "_numbersArray is never assigned to, and will always have its default value null" [closed] 【发布时间】:2021-10-29 03:36:10 【问题描述】:我正在创建一个将读取 CSV 文件的应用程序,每行有 5 个乐透号码。
对于每一行,我获取乐透号码数组(在屏幕截图中名为 csvArray),并创建一个“LottoLine”对象。
(LottoLine 对象基本上只是另一个数组)
如您所见,我创建了 _numbersArray 数组,然后在构造函数中循环遍历 csvfile 数组中的每个元素,以更新 _numbersArray 的值。
但是我的 _numbersArray 出于某种原因不允许复制 csvfile 数组的数字,并且我收到警告“arrayName 从未分配给,并且将始终具有其默认值 null”
我对面向对象编程很陌生,所以我尝试过使用它:
为 _numbersArray 创建一个 get set 属性 将字段从公共更改为受保护 将静态添加到 _numbersArray 字段 使用array.copy方法显然所有的失败。
非常感谢关于这个问题的任何建议以及我的问题格式,如果我应该详细说明或提供更好的上下文等,请告诉我。
【问题讨论】:
Please do not upload images of code 但以文本形式提供 必须初始化数组:numbersArray = new int[arraySize];
编译器试图告诉您代码中有错误。实际上, _numbersArray 从未被初始化。此时它只是一个引用类型的变量声明,它的默认值为null。您需要使用 new int[6] 对其进行初始化,或者只需将 csvArray 引用分配给 _numbersArray (应该选择一个或另一个更好的上下文)
【参考方案1】:
您没有在示例中创建数组。在 C# 中,您需要调用具有固定大小的数组的构造函数。所以你在构造函数中的第一行应该是这样的:
_numbersArray = new int[42]
那么你的循环中有一个错误。在不知道边界的情况下迭代和访问数组的元素是危险的。
为了使这更好,你应该将你的构造函数更改为这样的:
_numbersArray = new int[6];
for(int i = 0; i < vcsArray.length && i < _numbersArray.length; i++)
...
【讨论】:
以上是关于将数组从一行复制到一个数组对象中-“_numbersArray 永远不会分配给,并且始终具有其默认值 null”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在javascript中将对象数组复制到另一个数组中(深度复制)
在javascript中将对象数组复制到另一个数组而没有对象引用(深拷贝)