【发布时间】:2015-10-13 21:10:29
【问题描述】:
我想定义一个包含 StopWatch 的结构,然后是一个结构数组。
struct SWExecutionTime
{
public Stopwatch swExeTime;
public int intSWRecCount;
public double dblSWResult;
}
SWExecutionTime[] SWExeTime = new SWExecutionTime[10];
当我尝试这样做时,它显示运行时错误System.NullReferenceException:
SWExeTime[0].swExeTime.Start();
intSWRecCount和dblSWResult的初始值为零,所以我不需要构造函数来初始化这些变量。唯一需要初始化的变量是 swExeTime(显然)。当我使用没有任何输入参数的构造函数时,C# 还会显示错误Structs cannot contain explicit parameterless constructors。
我该如何解决这个问题?
【问题讨论】:
-
new SWExecutionTime()只实例化结构体;它不会在结构中创建新的秒表对象。如果您想这样做,请为结构编写构造函数,或提供默认实例化。 -
带数组的构造函数?为什么要降级?
-
我不知道这意味着什么。如果没有某种构造,就不可能在其中放置秒表对象。请记住,
int和double是原始类型;编译器可以为它们假定默认值为零。 StopWatch 类的情况并非如此。 -
或者,使用
class而不是struct。然后你可以编写你的无参数构造函数,而编译器不会抱怨。