Сброс vars в исходное состояние - PullRequest
0 голосов
/ 19 октября 2019

Не знаю, как можно объяснить этот сценарий, поэтому я буду стараться изо всех сил, используя примеры ..

Итак, у меня есть основной класс,

Main.cs


//Code

class Main {
    public Run() {
        while(true)
        {
            Minor start = new Minor();
            start.Run();
        }
    }
}

Незначительныйclass,

Minor.cs

//Code

class Minor {
    public Run() {
        Test.hi += 1;
        Console.WriteLine(Test.hi);
    }
}

Тестовый класс,

Test.cs

//Code

class Test {
    public int hi = 0;
}

Во время выполнения приведенного выше примера в каждом цикле целое число в Time.cs будет увеличиваться. Таким образом, на выходе будет 3 запуска. .

1
2
3

Однако, если бы я поместил public int hi = 0 внутри, Minor.cs, как показано ниже

Minor.cs

//Code

class Minor {

    public int hi = 0;

    public Run() {
        hi += 1;
        Console.WriteLine(Test.hi);
    }

}

Выход всегда будет 1, потому что каждый циклновый экземпляр Minor создан ... Теперь я знаю, что мог бы просто создать новый экземпляр Test.cs в Minor.cs, но у меня есть несколько переменных / целых чисел / строк, которые изменяются во время цикла, однако должны быть значением по умолчаниюна следующем цикле.

Можно ли программным образом сбросить все классы в их состояния по умолчанию программно, кроме Main.cs ИЛИ можно ли наследовать все остальные classes в Minor.cs, чтобы при создании нового экземпляра Minor.csсоздан, новый экземпляр тех тоже?

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Как вы сами сказали, решение заключается в создании нового объекта Test.

public Run() {
        var test = new Test():
        Console.WriteLine(Test.hi);// I'm assuming this should be  'test.hi'
    }
0 голосов
/ 19 октября 2019

Возможно, я неправильно понимаю ваши ограничения, но если вы хотите сбросить все переменные в классе, я бы подумал добавить к этому классу метод Reset(), который просто делает это: устанавливает все свойства по умолчанию по одномуодин.

...