虽然我正在实例化对象,但对象引用没有设置为对象的实例错误
本文关键字:对象 设置 错误 实例 对象引用 实例化 | 更新日期: 2023-09-27 17:49:21
public partial class College
{
public CollegeDetails CollegeDetails;
public List<Students> Students;
public StaffDetails StaffDetails;
}
public partial class Students
{
public StudentDetails StudentDetails ;
public List<Marks> Marks;
}
在我的aspx.cs文件
College college = new College ();
Students students= new Students ();
//List<Students> students = new List<Students>;
if (IsValidPost())
{
if (Session["xml"] == null)
{
college.students.Add(new students{ });
Addtogrid();
}
else
{
college = (College)(Session["xml"]);
if (college.students.Count == 0)----getting object refernce erro here
{
college.students.Add(new students{ });
}
Addtogrid();
}
}
else
{
if (Session["xml"] != null)
{
}
请帮。
您需要在构造函数中添加Students
和Marks
的创建。
public College()
{
Students = new List<Students>();
}
public Students()
{
Marks = new List<Marks>();
}
或者如果构造函数不可用,则在使用
您从未在College类中实例化Student List。对于College和Student类中的其他对象也是如此。
public partial class College
{
public CollegeDetails collegeDetails;
//Never instantiate
//public List<Students> students;
//Should be:
public List<Students> students = new List<Students>();
public StaffDetails staffDetails;
}
仅仅声明了College和Student的实例并不意味着创建了包含它们的对象的新实例。您还需要创建它们的实例:
public partial class College {
public College() {
CollegeDetails = new CollegeDetails();
Students = new List<Students>();
StaffDetails = new StaffDetails();
}
public CollegeDetails CollegeDetails;
public List<Students> Students;
public StaffDetails StaffDetails;
}
public partial class Students {
public Students() {
StudentDetails = new StudentDetails();
Marks = new List<Marks>();
}
public StudentDetails StudentDetails;
public List<Marks> Marks;
}
您将需要做类似于以下的事情,以便您的组合类型暴露的类型不是null
:
public partial class College
{
public College()
{
CollegeDetails = new CollegeDetails();
Students = new List<Student>();
StaffDetails = new StaffDetails();
}
public CollegeDetails CollegeDetails;
public List<Students> Students;
public StaffDetails StaffDetails;
}
public partial class Student
{
public Student()
{
StudentDetails = new StudentDetails();
Marks = new List<Mark>();
}
public StudentDetails StudentDetails ;
public List<Marks> Marks;
}
以上几点说明:
类型的构造函数只在创建实例时调用一次,这允许你准备好,可以这么说;在这种情况下,需要实例化预期由外部源(任何public
)使用的类型。
我将Students
重命名为Student
(非复数),因为List<Student>
通过名为Students
的属性可访问而实现复数;我怀疑你也可以为Mark/s
做同样的事情。
在我看来,College对象的构造函数没有实例化student列表。