Можно ли очистить объекты с помощью свойства get после вызова класса? - PullRequest
1 голос
/ 08 мая 2020

это ниже в качестве примера кода;

    private ExampleStatus _status;

    public ExampleStatus status
    {
        get
        {
            if (_status == null) _status = new ExampleStatus();

            //if (_status.receivedData) _status.receivedData = false; //this line is incorrect !

            return _status;
        }
    }
    public class ExampleStatus
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool receivedData { get; set; }

        //I don't want to use this method
        public void Clear()
        {
            Id = 0;
            Name = string.Empty;
            receivedData = false;
        }
    }


    int stateType = 0;
    void ContinuousLoop(ExampleStatus statusObj)
    {
        while (true)
        {
            //I don't want to use the options below
            //statusObj.Clear();
            //or
            //statusObj = new ExampleStatus();

            if (stateType == 0)
            {
                statusObj.Id = 0;
                statusObj.Name = "Firs Status";
            }
            else if (stateType == 1)
            {
                statusObj.Id = 1;
                statusObj.Name = "Second Status";
                statusObj.receivedData = true;
            }
            else if (stateType == 2)
            {
                statusObj.Id = 2;
                statusObj.Name = "Third Status";
            }
        }
    }
    void RunThread()
    {
        var t1 = new Thread(() =>
          {
              ContinuousLoop(status);
          });
        t1.Start();
    }

Можно ли установить значения по умолчанию без метода или нового экземпляра, как показано в примере? Собственно, поэтому я задаю этот вопрос: я буду использовать класс, который я определил, во многих местах. Мне нужно будет добавить блок кода, например метод Clear, в каждое место, где я его использую.

Мне также интересно еще кое-что. Если я каждый раз назначаю новый экземпляр для сброса моих объектов, вызывает ли это проблемы с памятью? Я более-менее знаю, как работают сборщики мусора. Однако они говорят, что на практике это не работает, как сказано в теории. Поэтому, если я добавлю «IDisposable» в свой класс, он скажет сборщику мусора: «Добро пожаловать, я мусорщик». Ты меня тоже возьмешь?

...