多维数组的新手,我正在研究一个小项目。
当我尝试将2个数组(学生和教师)存储到课程数组中时,将它们创建为类数组时出现错误
以下是我main()
Student stud1 = new Student("Alex", "Kelly", DateTime.Parse("14/07/2000"));
Student stud2 = new Student("Tom", "Smith", DateTime.Parse("16/08/198
Student stud3 = new Student("Mary", "Jones", DateTime.Parse("10/01/1998"));
//add students to an array and get the count
Student[] studentArray = new Student[3] { stud1, stud2, stud3 };
int count1 = studentArray.Length;
//add teacher objects
Teacher prof1 = new Teacher("Beckham");
Teacher prof2 = new Teacher("Pele");
Teacher prof3 = new Teacher("Maradonna");
Teacher[] teacherArray = new Teacher[3] { prof1, prof2, prof3 };
//course Object
Course course1 = new Course("Programming with C#");
Course[,] courseList = new Course[,] { {studentArray} , { teacherArray } };
当我尝试将{ studentArray, teacherArray }
添加到courseList
数组时,我在显示的最后一行收到错误。
错误是
无法将
Student[]
类型隐式转换为Course
如果我将数组从Course
更改为object [,]
,则可以正常使用
我是否需要在课程文件中添加内容?
答案 0 :(得分:4)
看起来您的代码可以重构。
例如,为什么Course
类看起来不像:
class Course
{
public string Name;
public List<Student> Students;
public List<Teacher> Teachers;
}
这是更自然和对象的方式。在这种情况下,您不需要二维数组,并且只能使用List<Course>
。
另请注意 - 在许多情况下List<T>
比T[]
数组更方便,因为它会自动调整大小。
答案 1 :(得分:3)
您遇到的错误是因为Course
数组只允许Course
类型的对象。你不能用它来放置其他对象或数组。
要解决您的问题,最好将Student
和Teacher
数组作为Course
对象的属性。然后可以根据需要为这些值分配值。
请参阅:
https://msdn.microsoft.com/en-us/library/9b9dty7d.aspx有关数组的信息。 https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx了解有关房产的信息。
在编辑后更新
object[,]
数组将起作用,因为object
是所有其他类型的基本类型。因此,object[]
可以为其分配任何其他类型。正如您所说,您正在学习编程,因此可能值得阅读面向对象设计 - 它将帮助您更好地建模数据。首先尝试https://msdn.microsoft.com/en-us/library/dd460654.aspx。
答案 2 :(得分:0)
你应该尝试做的是使用OBJECT ARRAYS。该数组将存储不同的对象,并且还将保留其形式。 看看这个链接。它在这个主题上非常详细。 enter link description here
答案 3 :(得分:0)
要扩展之前的答案,请始终考虑如何分离数据。例如,课程本身就是一个非常“静态”的课程。与参加者和导师相比的概念。课程甚至可以有不同的参与者等不同的日期,但不会改变日期和相关的日期。
所以你的模型可能是:
public class CourseSchedule
{
public CourseSchedule(Course course, Student[] students, Teacher[] teacher)
{
this.Course = course;
....
}
// Some sort of Date too
public Course Course { get; private set; }
public IEnumerable<Student> Students { get; private set; }
public IEnumerable<Teacher> Teachers { get; private set; }
}
多维数组值得理解,但特定于某些类型的编程 - 图形,数学变换等。您倾向于将它们用于低级编码,但是对于现实世界结构的建模,例如您的课程预订,它们通常不合适