2015-10-13 176 views
-4

我想定義一個包含StopWatch和一個struct數組的結構體。結構不能包含顯式的無參數構造函數

struct SWExecutionTime 
    { 
     public Stopwatch swExeTime; 
     public int intSWRecCount; 
     public double dblSWResult; 
    } 

    SWExecutionTime[] SWExeTime = new SWExecutionTime[10]; 

它顯示運行時錯誤System.NullReferenceException當我嘗試這樣做:

SWExeTime[0].swExeTime.Start(); 

intSWRecCountdblSWResult是零,所以我並不需要有一個構造函數初始化該初始值這些變量。唯一需要初始化的變量是swExeTime(顯然)。當我使用沒有任何輸入參數的構造函數時,C#也顯示錯誤Structs cannot contain explicit parameterless constructors

我該如何解決這個問題?

+2

'新的SWExecutionTime()'只實例化結構;它不會在結構中創建一個新的秒錶對象。如果你想這樣做,爲該結構編寫一個構造函數,或者提供一個默認實例。 –

+0

構造函數與數組?爲什麼降級? – NESHOM

+2

我不知道這意味着什麼。沒有某種結構,沒有希望在那裏有秒錶物體。請記住,'int'和'double'是原始類型;編譯器可以爲它們假定默認值爲零。 StopWatch類也是如此。 –

回答

3

使用一個類,爲什麼你堅持結構?

class SWExecutionTime 
{ 
    public Stopwatch SWExeTime { get; } = new Stopwatch(); 
    public int SWRecCount { get; } = 0; 
    public double SWResult { get; } = 0; 
} 

此外,請遵循命名的最佳做法。

相關問題