如何解决多结构题
我对编码非常陌生,只是我的第一步,所以我很抱歉没有在技术上正确地说出一些东西。 我尝试从 Structure 类中的 Array1 上调用 Structure Student 中的 Array2。
最后两行代码不起作用,我得到“未处理的异常:System.NullReferenceException:未将对象引用设置为对象的实例。”
我该如何纠正?我觉得我错过了一些无关紧要的东西,但仍然无法弄清楚。提前感谢您的所有回答!
class Program
{
struct Class
{
public Student[] Array1;
}
struct Student
{
public string firstName;
public string lastName;
public int code;
public GradesCourse[] Array2;
}
struct GradesCourse
{
public string nameCourse;
public double gradeMidterm;
}
Class myClass;
myClass.Array1 = new Student[2];
Student myStudent;
myStudent.Array2 = new GradesCourse[2];
for (int i = 0; i < myClass.Array1.Length; i++)
{
myClass.Array1[i].firstName = Console.ReadLine();
myClass.Array1[i].lastName = Console.ReadLine();
myClass.Array1[i].code = Convert.ToInt32(Console.ReadLine());
for (int j = 0; j < myStudent.Array2.Length; j++)
{
myClass.Array1[i].myStudent.Array2[j].nameCourse = Console.ReadLine();
myClass.Array1[i].myStudent.Array2[j].gradeMidterm = Convert.Todouble(Console.ReadLine());
}
}
解决方法
首先你的代码无法编译
有一个 .myStudent
不应该出现在最后两行。
因为它们是结构体,所以不应在循环的任何部分创建新的 myStudent
变量,因为它们不会指向 myClass
中的相同结构体
看看这个更正后的代码:
void Main()
{
Class myClass;
myClass.Array1 = new Student[2];
for (int i = 0; i < myClass.Array1.Length; i++)
{
myClass.Array1[i].firstName = Console.ReadLine();
myClass.Array1[i].lastName = Console.ReadLine();
myClass.Array1[i].code = Convert.ToInt32(Console.ReadLine());
myClass.Array1[i].Array2 = new GradesCourse[2];
for (int j = 0; j < myClass.Array1[i].Array2.Length; j++)
{
myClass.Array1[i].Array2[j].nameCourse = Console.ReadLine();
myClass.Array1[i].Array2[j].gradeMidterm = Convert.ToDouble(Console.ReadLine());
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。