作者:蜜爱女_201 | 来源:互联网 | 2023-05-18 16:11
本人刚刚学习C#,有个作业要用到对象数组.我写的有问题,希望大家帮我解决(输入姓名的时候报错:未将对象引用设置到对象的实例).publicclassStudent
本人刚刚学习C#,有个作业要用到对象数组.我写的有问题,希望大家帮我解决(输入姓名的时候报错:未将对象引用设置到对象的实例).
public class Student
{
private string strName;
double[] dbScore=new double[3];
public string Name
{
set
{
strName=value;
}
get
{
return strName;
}
}
public double this[int nIndex]//索引器
{
get
{
return dbScore[nIndex];
}
set
{
dbScore[nIndex]=value;
}
}
}
class Class1
{
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Student[] stuPer=new Student[1];///对象数组
Console.WriteLine("输入姓名:");
stuPer[0].Name=Console.ReadLine();
Console.WriteLine("姓名是:{0}",stuPer[0].Name);
}
}
4 个解决方案
你这样错了。应该在STUDENT里面聚合一个集合类或者字典类,类似这样:
class Student
{
ArrayList al;
public Student() { al = new Arraylsit();}
public object index [int i]
{
get {return al[i];}
}
}
具体的范围判断,类型转换和错误捕获什么的就不写了,这样才是索引器的用法,也能较好的实现你希望的功能
数组中的对象必须一个一个的初始化,如下:
Student[] stuPer=new Student[500];
for(int i=0;i<500;i++)
{
stuPer[i]=new Student();
}
Student[] stuPer=new Student[1];///对象数组
相当于Student[] stuPer=new Student[1]{null};
即没有对stuPer[0]初始化。
加一条语句:
stuPer[0]= new Student();