微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

简单-数组无法在内部循环-C#

如何解决简单-数组无法在内部循环-C#

我有这段代码尝试输出已经输入的列表并要求匹配的成绩。 该数组有效,当我检查它的长度时,它与输入匹配。

我已经在一个类中声明了字符串数组。

static string[] nameArray;

然后我有2个按此顺序工作的功能

static void ConvertListToArray()
{
    string[] nameArray = names.ToArray();
    arrayLength = nameArray.Length;
}
       
static void AskNameForGrade()
{
    for (int i = 0; i < arrayLength; i++)
    { 
        Console.WriteLine($"Please enter grade for {nameArray[i]}");
    }
}

给我错误的部分是{nameArray[i]}

错误消息是

“ System.NullReferenceException:'对象引用未设置为 对象的实例。'“

我认为数组为空, 但如果我在输入尺寸等于输入尺寸之前检查尺寸(即> 1)

我敢肯定这很简单,但是任何帮助将不胜感激。

解决方法

不管其他任何问题,该问题很可能是 static nameArray field 尚未被初始化 ,但是您初始化一个具有相同名称的局部 scoped 变量。这就是为什么静态成员 arrayLength具有您要假定的值,并且静态成员 nameArray未初始化null。从来没有设置过...

我相信会有编译器警告提醒您该问题。

局部变量'nameArray'隐藏字段string[] blah blah blah

解决方法是删除局部变量

static string[] nameArray;

static void ConvertListToArray()
{
    //string[] nameArray = names.ToArray();
    nameArray = names.ToArray(); // set your static member instead
    arrayLength = nameArray.Length;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。