gpt4 book ai didi

c# - C# 中是否有任何速记来使 setter 额外设置一个脏标志

转载 作者:太空狗 更新时间:2023-10-30 00:30:14 25 4
gpt4 key购买 nike

目前为了制作二传手还设置了一个dirty property我必须做这样的事情:

private bool _isDirty;
private int _lives;
public int Lives{
get { return _lives; }
set {
if (_lives != value){
_lives = value;
_isDirty = true;
}
}
}

编写起来不是很痛苦,但如果我在我的项目中大量使用这种模式,那么它会是一段垂直空间很大且重复的代码。

在 C# 中是否有任何速记或替代的、更短的语法来做到这一点?

我特别想要完成的是某些变量的改变应该触发一个脏标志,在代码的渲染阶段可以使用它来刷新渲染对象的属性。 p>

最佳答案

创建一个实现辅助方法的类。

class DirtyClass
{
protected bool IsDirty { get; set;}

protected void ChangeProperty<T>(ref T backing, T Value)
{
if(!backing.Equals(value))
{
backing = value;
IsDirty = true;
}
}
}

在setter中使用helper方法

class LivesCounter : DirtyClass
{
private int _lives;
public int Lives
{
get { return _lives; }
set { ChangeProperty(ref _lives, value); }
}
}

处理空元素留作练习。

正如 jdl134679 所提到的,查看 INotifyPropertyChanged 接口(interface)。

关于c# - C# 中是否有任何速记来使 setter 额外设置一个脏标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40146929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com