老实说;公共变量和公共属性访问器之间的区别是什么

本文关键字:之间 区别 是什么 属性 变量 老实说 访问 | 更新日期: 2023-09-27 18:01:02

可能的重复:
C#中的字段和属性有什么区别?
我应该为数据使用公共属性和私有字段还是公共字段?

之间的区别是什么

public string varA;

public string varA { get; set; }

老实说;公共变量和公共属性访问器之间的区别是什么

公共属性访问器将来为您提供了更大的灵活性。

如果您想在设置值时添加验证,只需编写一个非默认的setter即可。您的其他代码都不需要修改。

您也可能出于某些原因想要用代码替换默认的getter。对于公共变量来说,这可能是一个真正的痛苦。

除了其他答案外,您还可以使用一个属性使值只读,甚至仅设置:

public int Item { get; private set; } // read-only outside the class. Can only be set privately.

我也遇到过这样的情况,我后来决定要代理一个对象,或者添加AOP,这基本上需要属性。

公共属性通过公开的getter和setter方法访问字段和内部类代码。公共字段直接访问字段。

使用属性提供了提供抽象和设计层的潜力(使集访问器受保护、私有的能力(。

当指定了一个属性而没有正文时,编译器会创建一个底层私有字段,用于存储值。本质上:

private int item = 0;
public int Item {
get { return item; }
set {item = value; }
}

通常,我倾向于将属性用于公开变量,将字段用于私有变量。如果一个字段被多次访问,并且速度是一个关键的设计要求,我可能会考虑使用该字段。