2015-10-13 153 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; 
} 

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

相关问题