Проверка был ли изменён экземпляр класса после определённого момента - C#
Формулировка задачи:
Дня доброго вам, и заслуженных результатов работы.
Ребят, выведите из ступора
Язык C#
При работе с экземплярами класса происходят изменения значений его полей. Нужно иметь возможность проверить, были ли произведены изменения после какого-то момента или нет.
Добавлять флаг типа IsChanged и потом его втыкать во все методы класса слишком черевато ошибками в коде (полюбой гдето забудется).
Ещё как вариант во все поля засунуть get set и в них добавить этот флаг...
А может можно в экземпляре класса хранить экземпляр этого же класса, с которым при необходимости в дальшнейшем? будем сверяться. Ступор в том что не совсем понимаю как это сделать, а точнее как засунуть создание такой вот "резервной копии" в конструктор.
(Вопрос этики: Пока сидишь работаешь, иногда на пустом месте возникает ступор, и в таком случаее спрашиваешь у соседа, если он есть, он с улыбкой ответит что да, "2+2=4 ты чего забыл чтоли?" Стоит ли спрашивать вопросы на формуе, не сильно долго думая над ними, но считая что ответ какой-то простой, но просто вылетел из головы? или всё же не стоит так поступать, а посидеть и подумать ещё?)
Решение задачи: «Проверка был ли изменён экземпляр класса после определённого момента»
textual
Листинг программы
class Test
{
private bool isChanged = false;
private String var1;//несколько переменных для примера
private Int32 var2;//несколько переменных для примера
//private Dictionary<String, String> Var3;//несколько переменных для примера - это реализуется другим способом, предложенный не подходит
public String Var1
{
get {return var1;}
set
{
if(var1!=value)
{
isChanged = true;
var1 = value;
}
}
}
public Int32 Var2
{
get {return var2;}
set
{
if(var2!=value)
{
isChanged = true;
var2 = value;
}
}
public bool IsChanged
{
get
{
bool result = isChanged;
isChanged = false;
return result;
}
}
public Test(String InputVar)//Обычный конструктор
{
this.Var1 = InputVar;//эти изменения уже отследяться, т.к.
this.Var2 = 13; //поле для хранения информации об изменениях доступно сразу
}
}