2012-02-03 54 views
0

我是新手編程,我有以下問題。 我有一個類與一個數組。不過,我只知道稍後的數組大小。空引用 - 數組保持空

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

我不確定我明白這個問題是什麼?你是否在分配數組之前嘗試讀取數組? – 2012-02-03 01:34:59

+0

嗨,喬治! ...我用Integrate函數中的值填充數組 - 但我需要稍後在MyData類中訪問它們。但是,如果在Integrate函數之外訪問,則數組保留爲空。 – timkado 2012-02-03 01:38:54

+0

你上面有什麼好 - 你不應該有一個問題。你確定你在訪問數組之前調用了你的'Integrate'函數嗎?看到一段代碼,你會得到一個空的異常是很有幫助的。 – 2012-02-03 01:43:56

回答

1

關鍵是要使用rad之前致電Integrate只要你沒有以任何方式使用rad,直到你初始化它,你會沒事的。

在C#類的任何字段中自動開始作爲針對該類型的默認值,這用於爲bool數值類型(intuintlong等),false是0,並且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它的初始化之前。

如果您發現將初始化代碼移動到構造函數沒有意義,您可能需要重構爲兩個類,以便每個類都有一個作業。

+0

謝謝!我會試試這個! – timkado 2012-02-03 01:44:46