我应该使用公共属性和私有字段或公共字段来获取数据吗?

我应该使用公共属性和私有字段或公共字段来获取数据吗?

在我看过的大部分代码中(在SO上,我都会在我自己的代码中使用codeproject.com),我已经看到为一个类包含的每个私有字段创建公共属性,即使它们是最多的基本类型get; set;

private int myInt;public int MyInt {
     get { return myInt; }
     set { myInt = value }}

我的问题是:这与以下方面有何不同:

public int MyInt;

如果我们应该使用属性而不是公共字段,为什么我们应该在这种特定情况下使用它们呢?(我不是在谈论更复杂的例子,其中getter和setter实际上做了一些特殊的事情,或者只有一个get或set(只读/写)而不仅仅是返回/设置私有字段的值)。它似乎没有添加任何额外的封装,只在IntelliSense中提供一个漂亮的图标,并放在类图中的特殊部分!


慕神8447489
浏览 439回答 3
3回答

慕婉清6462132

三个原因:您不能像子属一样覆盖子类中的字段。您最终可能需要更复杂的getter或setter,但如果它是一个字段,更改它会破坏API。惯例。这就是它的完成方式。我确信有更多的理由我只是没想到。在.Net 3.x中,您可以使用如下自动属性:public int Age { get; set; }而不是旧的学校方式自己像这样声明你的私人领域:private int age;public int Age{     get { return age; }     set { age = value; }}这使得它像创建一个字段一样简单,但没有突破性的变化问题(除此之外)。
打开App,查看更多内容
随时随地看视频慕课网APP