结构不能包含显式的无参数构造函数
问题描述:
我想定义一个包含StopWatch和一个struct数组的结构体。结构不能包含显式的无参数构造函数
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
。
我该如何解决这个问题?
答
使用一个类,为什么你坚持结构?
class SWExecutionTime
{
public Stopwatch SWExeTime { get; } = new Stopwatch();
public int SWRecCount { get; } = 0;
public double SWResult { get; } = 0;
}
此外,请遵循命名的最佳做法。
'新的SWExecutionTime()'只实例化结构;它不会在结构中创建一个新的秒表对象。如果你想这样做,为该结构编写一个构造函数,或者提供一个默认实例。 –
构造函数与数组?为什么降级? – NESHOM
我不知道这意味着什么。没有某种结构,没有希望在那里有秒表物体。请记住,'int'和'double'是原始类型;编译器可以为它们假定默认值为零。 StopWatch类也是如此。 –