首先在程序中声明了10个对象数组如下:
protected Model[] models = new Model[10];//Model是自定义类
接着,我访问这个数组中任意一个元素,如:
models[0].ModelName//ModelName是Model类中的一个属性。
问题出现了,编译时顺利通过,但程序调试到这行语句时就出错。
注:models[0]为空对象,我没有赋具体的实例。
这是什么原因啊?
protected Model[] models = new Model[10];//Model是自定义类
接着,我访问这个数组中任意一个元素,如:
models[0].ModelName//ModelName是Model类中的一个属性。
问题出现了,编译时顺利通过,但程序调试到这行语句时就出错。
注:models[0]为空对象,我没有赋具体的实例。
这是什么原因啊?
解决方案 »
- 通过属性为字段赋值
- xml与c#的联系
- Excel 高难度问题,高手进来看下!!!!!!!!!!!!!!!!!
- 映射到D数组中,则aij=D(k),其中k=n*(i-1)-[i*(i-1)]/2+j为什么?
- 免费的支持分组的Datagrid
- DataGrid居然不包含DataBind()?
- 如何在一个DataGrid里加入两个表的字段
- 一个 WinForm 自定义用户控件如何设置成固定高度或固定宽度?
- 各位大哥,请问哪里有Visual Studio .NET下载,还有,它出正式版了么
- 对一段文字进行剪贴,拷贝 用什么类?
- 关于 属性栏属性的问题
- 【醒目一点】gridview导出excel的问题
可是里面没有赋值呀
你怎么取models[0].ModelName呢
这样实例化的结果实际上是
Model[0]=null;
Model[1]=null;
Model[2]=null;
.....
所以。
编译器只是从语法上去判断是否正确,这种运行时的状态又不是编译器能帮你完成的事情.如果Module是值类型,你直接这么用没关系,如果是引用类型,必须先new出对象.
new Model() { ModelName=..},
new Model() { ModelName=..},
...
}
string s=models[0].ModelName;
必须先new 对象
确实用List比较好点
//上面这句话,只是定义了一个大小为10的数组对象,但是对象里面未曾存放过任何东西。
相当于是仅仅标识了十个对象的类型为Model而已。真正要用的话,需要先给这个数组一个个的赋值。
protected Model[] models = new Model[10];//Model是自定义类for(int i = 0; i < models.Length; i++)
{
models[i] = new Model();
}
{
models[i] = new Model();
//为models[i]的各属性赋值
}
赋值了吗?
如果没有的话当然为null
{
models[i]=new models();
}
var models =new []{new Model{ModelName="初始化"}};