我是编程新手,我有以下问题。 我有一个带有数组的类。但是,我只知道数组稍后会有多大的尺寸。
public class MyData
{
public double[] rad;
public void Integrate(int h_start, int h_stop, double dla_tar)
{
rad = new double[Math.Abs(h_stop - h_start)];
...fill up the rad array
}
--work with rad here--
}
如何使用Integrate函数在MyData类中创建rad数组。就像它一直保持为空。这可能是一个非常愚蠢的问题......
答案 0 :(得分:1)
关键是在使用Integrate
之前致电rad
。只要您在初始化之前不以任何方式使用rad
,会好的。
C#类中的任何字段都会自动开始作为该类型的默认值,对于数字类型(int
,uint
,long
等,该值为0), false
为bool
,null
为任何参考类型,包括数组。解决此问题的规范方法是从构造函数初始化数据。所以你可以做类似
public class MyData
{
public double[] rad
{
get;
private set;
}
public MyData(int start, int stop, double tar)
{
rad = new double[Math.Abs(start - stop)];
// More code here
}
// No need for an integrate method now - the work is done in the constructor
}
这样,在初始化之前不可能使用rad
。
如果您发现将初始化代码移动到构造函数没有意义,那么您可能需要重构为两个类,以便每个类都有一个作业。