为什么在公共字段上使用属性?

时间:2015-04-30 16:09:25

标签: c# properties field

为什么我要这样做:

public T X { get; set; }

而不是:

public T X;

人们(包括关于SO的一些答案)告诉我“如果你想改变以后的行为怎么办?”这是一个答案,但事实并非如此,因为我可以将public T X;转换为

public T X {
    get { blabla; }
    set { blybly; }
}

修改:在发布关于“阅读本文”和“阅读本文”的链接之前,您可以查看链接。其中99%的人主要包含引用其他链接的其他人,实际上没有人给出在字段上使用属性的正当理由。

这是一个流行答案的一个例子:“你可以让setter私有

public T X { get; private set; }

很明显,如果我想要私人制定者,我会创建一个属性。但如果我不这样做,为什么不使用一个领域呢?如果我后来决定要私人制定者,为什么我不能将我的字段从public T X;更改为public T X {get; private set; }

1 个答案:

答案 0 :(得分:0)

我能想到的一件事就是这个。

  1. 使用您的类创建一个包含名为X的字段的程序集。
  2. 创建一个使用该类并设置X值的应用程序。
  3. 部署您的应用。
  4. 将类更新为属性,因为您需要getter / setter中的逻辑。
  5. 构建DLL并将其部署为更新。
  6. 运行它时,您将获得System.MissingFieldException - 因为最初编写的消费者应用程序是为了查找字段而不是get_X方法。

    您是否应该以这种方式部署应用程序是另一回事,但如果您是第三方代码提供商并且客户端以这种方式使用您的库,那么它将使其部署的应用程序崩溃。