我有一个看起来像这样的属性。
public int NumberOfElephants { get; set; }
这个属性在一个 observablecollection 中,它必须通知另一个属性它已经改变了。
我会怎么做
public int NumberOfElephants { get; set { OnPropertyChanged("totalAnimals"); }
不需要这样的代码
private int _numberOfElephants;
public int NumberOfElephants {
get {
return _numberOfElephants;
}
set {
_numberOfElephants = value;
OnPropertyChanged("totalAnimals");
}
}
最佳答案
你不知道。你不能。
自动实现的属性仅在属性很简单时起作用——当获取/设置除了“返回变量的值”或“设置变量的值”之外不需要代码时。你可以通过重新格式化来缩短它,当然......我会这样写:
private int numberOfElephants;
public int NumberOfElephants {
get { return numberOfElephants; }
set {
_numberOfElephants = value;
OnPropertyChanged("totalAnimals");
}
}
实际上,我会在集合的开头和属性的开头使用“单独一行的左大括号”,但我保留了您喜欢的样式。但是在一行中使用“单个表达式 get
/set
实现”可以使具有大量属性的类更加简洁。
关于c# - 在不添加私有(private)变量的情况下引发 propertychanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847057/