几周前我开始使用C#开始一份新工作(我基本上已经开始学习 - 因为 - 在那里)我已经看到了几种做事方式,我很好奇为什么(看到我很新鲜,多年来他们都拿起了东西。)
基本上,我正在试图找出原因:
private int i;
优于:
private int I {get;set;}
如果答案是(我怀疑)为调用get / sets而生成额外的IL,那么为什么自动实现的get / sets存在呢?为什么
public int i;
比:
更糟糕public int I{get;set;}
更为好奇的是,为什么我不会总是使用属性,或者为什么我不会避免像瘟疫这样的自动实现方法。
我知道这听起来像是一个逻辑问题,当我想到它时,但在我写这篇文章的时候并不是那么多,所以我希望它有某种意义。
由于
答案 0 :(得分:1)
有很多时候,除了自动实现的属性定义之外,还需要额外的逻辑。
例如,如果你想实现INotifyPropertyChanged,在这种情况下,你需要你自己的支持字段,所以你可以写:
private int someValue;
public int SomeValue
{
get { return this.someValue; }
set
{
if (value != this.someValue)
{
this.someValue = value;
this.RaisePropertyChanged("SomeValue"); // This extra logic required...
}
}
}