gpt4 book ai didi

c# - C# 中的二维数组以及如何返回数组

转载 作者:行者123 更新时间:2023-11-30 22:49:12 25 4
gpt4 key购买 nike

我在 C# 中声明二维数组、填充它们然后返回数组时遇到问题。

目前,我是这样声明数组的:

private static string[,] _programData = new String[50,50];
public string[,] ProgramData
{
get
{
return _programData;
}
}

_programData 显示错误“无法从类型‘string[,] 隐式转换为 string[][]”

我应该指出,我正在尝试从另一个类调用 ProgramData,如下所示:

for (serviceCount = 0; serviceCount <= ffm.Program.Length; serviceCount++)
{
Console.WriteLine("Program Number: " + ffm.Program[serviceCount].ToString());
for (serviceDataCount = 0; serviceDataCount <= ffm.ProgramData.Length; serviceDataCount++)
{
**Console.WriteLine("\t" + ffm.ProgramData[serviceCount, serviceDataCount].ToString());**
}
}

错误发生在上面的粗线处:

对象引用未设置到对象的实例。

我认为我声明数组的方式似乎没有问题,只是我不理解的类型不匹配。

问候

最佳答案

首先,如上所述,调用 ffm.ProgramData.Length 将返回 2500 (50 * 50),因此您需要将该计数固定为 ffmProgramData.GetLength(1) 以返回第二个 维度。

其次,出现“对象引用未设置到对象实例”的错误是因为您引用了数组的未初始化部分。确保数组已填满,或者至少填满空字符串(显然,您需要在构造函数中运行此循环,在适当的地方更改变量名称,因为 ProgramData 在您拥有它时是只读的):

for(int fDim = 0; fDim < ffm.ProgramData.GetLength(0); fDim++)
for(int sDim = 0; sDim < ffm.ProgramData.GetLength(1); sDim++)
ffm.ProgramData[fDim, sDim] = "";

第三,您不需要在循环内调用 ToString() 方法。您正在将字符串转换为字符串。

关于c# - C# 中的二维数组以及如何返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com