1

this below to sample code;

    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();
    }

Is it possible to set default values ​​without a method or new instance, as shown in the example? Actually that's why I'm asking this question: I will use the class I have defined in many places. I will need to add a block of code, such as the Clear method, to every place I use it.

I'm also curious about one more thing. If I assign a new instance every time to reset my objects, does this cause problems in memory? I know more or less how garbage collections work. However, they say that in practice it does not work as said in theory. So if I add "IDisposable" to my Class, it would tell the garbage collector: Welcome, I'm a litter. Will you take me too?

abatishchev
  • 98,240
  • 88
  • 296
  • 433
semihtarik
  • 21
  • 4

0 Answers0