это ниже в качестве примера кода;
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» в свой класс, он скажет сборщику мусора: «Добро пожаловать, я мусорщик». Ты меня тоже возьмешь?