首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的二维数组及其返回方法

C#中的二维数组及其返回方法
EN

Stack Overflow用户
提问于 2009-08-20 09:20:05
回答 2查看 9.1K关注 0票数 2

我很难在C#中声明二维数组,填充它们,然后返回数组。

目前,我声明的数组如下:

代码语言:javascript
复制
private static string[,] _programData = new String[50,50];
    public string[,] ProgramData 
    { 
        get 
        { 
            return _programData; 
        } 
    }

_programData正在显示错误“无法隐式转换”类型为“string,to string”

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

代码语言:javascript
复制
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());**
                }
            }

错误发生在上面的粗体行上:

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

我不认为我如何声明数组有问题,只是类型不匹配,我不明白。

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-20 10:27:06

首先,调用ffm.ProgramData.Length将如前所述返回2500 (50 * 50),因此您需要将此计数修正为ffmProgramData.GetLength(1)以返回第二个维度的大小。

其次,您获得的“对象引用未设置为对象实例”的错误发生,因为您引用的是数组中未初始化的部分。确保数组充满了空字符串,或者至少填充了空字符串(显然,您需要在构造函数中运行这个循环,在适当的情况下更改变量名,因为ProgramData只读取它):

代码语言:javascript
复制
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()方法。你在把一根绳子投射到一根绳子上。

票数 2
EN

Stack Overflow用户

发布于 2009-08-20 10:08:37

programData正在显示错误“无法隐式转换”类型为“string,* to string”

不,它没有显示任何错误。代码编译得很好(使用C# 3.5)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1304979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档