将数组从一行复制到一个数组对象中-“_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中将对象数组复制到另一个数组而没有对象引用(深拷贝)

将2个数组复制到一个新数组中[重复]

无法将固定大小的字节数组从结构复制到 C# 结构中的另一个数组

如何将对象存储在数组中? [复制]

将Userform中的10列多列列表框复制到数组中