C# 结构不能包含显式无参数构造函数

C# 结构不能包含显式无参数构造函数,c#,struct,stopwatch,C#,Struct,Stopwatch,我想定义一个包含秒表的结构,然后是一个结构数组 struct SWExecutionTime { public Stopwatch swExeTime; public int intSWRecCount; public double dblSWResult; } SWExecutionTime[] SWExeTime = new SWExecutionTime[10]; 尝试执行此操作时,它显示运行时错误Syst

我想定义一个包含秒表的结构,然后是一个结构数组

    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不能包含显式无参数构造函数的错误


如何解决这个问题?

使用一个类,为什么要停留在结构上

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

另外,请遵循命名的最佳实践。

new SWExecutionTime()
仅实例化结构;它不会在结构中创建新的秒表对象。如果要这样做,请为该结构编写一个构造函数,或者提供一个带有数组的默认instantiation.constructor?为什么降级?我不知道那是什么意思。如果没有某种构造,那里就不可能有秒表对象。记住,
int
double
是基本类型;编译器可以假定它们的默认值为零。秒表类的情况并非如此。或者,使用
class
而不是
struct
。然后,您可以编写无参数构造函数,而无需编译器抱怨。