2015-10-13 2 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(); 

Начальное значение intSWRecCount и dblSWResult равны нулю, так что не нужно иметь конструктор для инициализации эти переменные. Единственной переменной, которая требует инициализации, является swExeTime (по-видимому). C# также показывает ошибку Structs cannot contain explicit parameterless constructors, когда я использую конструктор без какого-либо входного параметра.

Как это исправить?

+2

'new 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; 
} 

Кроме того, следуйте рекомендациям по наименованию.

Смежные вопросы