【问题标题】:Structs cannot contain explicit parameterless constructors结构不能包含显式无参数构造函数
【发布时间】: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();

intSWRecCountdblSWResult的初始值为零,所以我不需要构造函数来初始化这些变量。唯一需要初始化的变量是 swExeTime(显然)。当我使用没有任何输入参数的构造函数时,C# 还会显示错误Structs cannot contain explicit parameterless constructors

我该如何解决这个问题?

【问题讨论】:

  • new SWExecutionTime() 只实例化结构体;它不会在结构中创建新的秒表对象。如果您想这样做,请为结构编写构造函数,或提供默认实例化。
  • 带数组的构造函数?为什么要降级?
  • 我不知道这意味着什么。如果没有某种构造,就不可能在其中放置秒表对象。请记住,intdouble 是原始类型;编译器可以为它们假定默认值为零。 StopWatch 类的情况并非如此。
  • 或者,使用class 而不是struct。然后你可以编写你的无参数构造函数,而编译器不会抱怨。

标签: c# struct stopwatch


【解决方案1】:

使用类,为什么会卡在结构上?

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

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

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多