我已經爲我的ASP.NET類創建了一個程序來創建一個類名和數字,然後輸入十個學生名稱和學號。因此,我的網頁將提示用戶輸入這4個信息片段,將它們分爲MyClass(課程名稱和編號)和學生課程(其中包含學生姓名和編號)。我非常卡住NullReferenceException錯誤,不知道該怎麼做。如果任何人在這裏可以給我一些指示和方向,所以我可以從這個任務中挑選自己。有一點是肯定的,我是不允許輸入任何新的方法和變量。我只能使用我已初始化的當前的那些。初學者的頭痛:來自ASP.NET web上的數組的NullReferenceException
- Student []數組是我的Student類包含學生的姓名和ID的數組。
- 用戶首先將創建班級編號和姓名,以便在之後向其添加學生(帶有ID和姓名)。
- 只允許一個班級名稱和號碼(他們一起出發),最多隻有10名學生。 。
我得到空例外,在我的ToString()在MyClass的方法,其中classNumberAndName + =((學生)的學生[1])的ToString();
這是我的代碼,沒有語法錯誤。
public class MyClass
{
private string courseNumber;
private string courseName;
private int numberOfStudents;
private Student[] students;
public MyClass(string CourseNumber , string CourseName, Student[] Student)
{
students = new Student[Student.Length];
courseNumber = CourseNumber;
courseName = CourseName;
for (int i = 0; i < Student.Length; i++)
{
Student tmpArrayStudent = new Student(((Student)students[i]).ToString(),((Student)students[i]).ToString());
tmpArrayStudent = students[i];
}
}
public MyClass(string CourseNumber, string CourseName)
{
courseNumber = CourseNumber;
courseName = CourseName;
students = new Student[10];
}
public void addAStudent(Student student)
{//possible to create temp array?
Student[] students = new Student[10];
if(numberOfStudents < students.Length)
{
students[numberOfStudents] = student;
numberOfStudents++;
}
else
{
throw new Exception("Amount of Students Exceeded, no more than 10");
}
}
public string getClassNumberAndName()
{
return "Course Number: " + courseNumber + " " + " Course Name: " + courseName;
}
public override string ToString()
{
string classNumberAndName = getClassNumberAndName();
for(int i = 0; i < students.Length; i++)
{
classNumberAndName += ((Student)students[i]).ToString();
}
classNumberAndName += "Students Registered: " + numberOfStudents.ToString();
return classNumberAndName;
}
}
public class Student
{
private string idNumber;
private string name;
public Student(string ID, string Name)
{
idNumber = ID;
name = Name;
}
public override string ToString()
{
return "Student ID: " + idNumber + " " + " Student Name " + name;
}
}
這裏是web代碼的.aspx.cs文件。
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
pnlStudent.Visible = false;//use panels to disable the ability to enter new course information
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
MyClass course = new MyClass(txtCnum.Text, txtCname.Text);
Session.Add("Course", course);
((MyClass)Session["Course"]).addAStudent(new Student(txtCnum.Text, txtCname.Text));//since we entered to Student, course information or student information?
txtAnswers.Text += course.ToString();
pnlStudent.Visible = true;
}
protected void btnAdd_Click(object sender, EventArgs e)
{
Student student = new Student(txtID.Text, txtName.Text);
pnlCourse.Visible = false;
try
{
((MyClass)Session["Course"]).addAStudent(new Student(txtID.Text, txtName.Text));
txtAnswers.Text += Session["Course"].ToString();
}
catch(Exception ex)
{
txtAnswers.Text += "Amount of students are at maximum." + ex.Message;
}
}
}
請講清楚,你所得到的例外(最好是使樣品小得多5-7lines通常是不夠的)。另外「謝謝你的提示」是不需要的,因爲它們不會添加任何信息(改爲upvote/comment/accept)。 –
好吧,我剛剛添加了「我得到我的ToString()方法在MyClass中的空例外classNumberAndName + =((Student)students [i])。ToString();」我猜你需要看到的是MyClass和aspx.cs文件。我擔心我沒有正確構建陣列。 – GivenPie