为什么要使用成员变量?

时间:2012-02-17 21:44:49

标签: c# variables properties logic il

  

可能重复:
  Difference between Property and Field in C#

几周前我开始使用C#开始一份新工作(我基本上已经开始学习 - 因为 - 在那里)我已经看到了几种做事方式,我很好奇为什么(看到我很新鲜,多年来他们都拿起了东西。)

基本上,我正在试图找出原因:

private int i;

优于:

private int I {get;set;}

如果答案是(我怀疑)为调用get / sets而生成额外的IL,那么为什么自动实现的get / sets存在呢?为什么

public int i;

比:

更糟糕
public int I{get;set;}

更为好奇的是,为什么我不会总是使用属性,或者为什么我不会避免像瘟疫这样的自动实现方法。

我知道这听起来像是一个逻辑问题,当我想到它时,但在我写这篇文章的时候并不是那么多,所以我希望它有某种意义。

由于

1 个答案:

答案 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...
        }
    }
}