空引用 - 数组保持空白

时间:2012-02-03 01:30:49

标签: c# arrays class reference nullreferenceexception

我是编程新手,我有以下问题。 我有一个带有数组的类。但是,我只知道数组稍后会有多大的尺寸。

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数组。就像它一直保持为空。这可能是一个非常愚蠢的问题......

1 个答案:

答案 0 :(得分:1)

关键是在使用Integrate之前致电rad只要您在初始化之前不以任何方式使用rad,会好的。

C#类中的任何字段都会自动开始作为该类型的默认值,对于数字类型(intuintlong等,该值为0), falseboolnull为任何参考类型,包括数组。解决此问题的规范方法是从构造函数初始化数据。所以你可以做类似

的事情
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

如果您发现将初始化代码移动到构造函数没有意义,那么您可能需要重构为两个类,以便每个类都有一个作业。