C # перезапустить секундомер из элемента массива объектов

#c# #arrays #stopwatch

#c# #массивы #секундомер

Вопрос:

У меня есть секундомер, хранящийся в массиве объектов, и я хочу перезапустить его. Я использую массив объектов, потому что типы моих элементов постоянно меняются, что означает, что object [1] иногда может быть int, иногда double, иногда bool и т.д., Поэтому я не уверен, могу ли я использовать класс для этого.

Итак, почему секундомер не перезапускается в приведенном ниже коде?

 public static object[] test()
    {
        object[] obj = new object[4];

        obj[0] = true;    //bool;
        obj[1] = "test";   //string;
        obj[2] = 12;   //int;
        obj[3] = System.Diagnostics.Stopwatch.StartNew();

        return obj;
    }

    object[] testobject = new object[4];
    testobject = test();
    Thread.Sleep(1000);
    Console.WriteLine(((Stopwatch)testobject[3]).Elapsed.TotalMilliseconds);   
    ((Stopwatch)testobject[3]).Restart();   //Reset();
    Console.WriteLine(((Stopwatch)testobject[3]).Elapsed.TotalMilliseconds); 
  

Комментарии:

1. Так и должно быть. Это реальный код?

2. Помимо перемещения нижнего блока кода в метод main и добавления необходимых инструкций using, этот код отлично работает как есть в совершенно новом консольном проекте.

3. Закрытие как невоспроизводимое. Происходит что-то еще, чего не видно из предоставленной информации.

4. Это фактический код. У меня просто есть оператор if, который проверит, является ли object [0] истинным, а затем перезапустит секундомер. В инструкции if у меня есть консольная запись, которая доказывает, что в инструкциях if указано, но секундомер не перезапускается в инструкции if. Однако секундомер перезапускается вне инструкции if… Я не знаю, что не так

5. Что ж, я нашел решение. Я объявил секундомер как глобальную переменную, а затем обрабатываю его где угодно вместо того, чтобы иметь его в массиве. Это, однако, не отвечает на вопрос выше, но поскольку решение было дано, вы можете закрыть этот поток.