C# 为简单变量设置get的好处是什么
可能重复:C# 为简单变量设置get的好处是什么,c#,get,set,C#,Get,Set,可能重复: 我想这会在某个地方得到回答,但我在平常的地方找不到。我在想,这样做有什么好处 private int _foo; public int foo {get {return _foo;} set{_foo = value;}} 或 刚刚 public int foo; 如果需要更复杂的操作,我可以看到好处,但是像这样一个简单的案例有什么好处?这个问题在这里被问了很多次。 这些案例没有明确的利益证据(财产内部没有逻辑)。 更重要的是,使用一个字段,您可以获得一些最小的(纳米)速度优势
我想这会在某个地方得到回答,但我在平常的地方找不到。我在想,这样做有什么好处
private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}
或
刚刚
public int foo;
如果需要更复杂的操作,我可以看到好处,但是像这样一个简单的案例有什么好处?这个问题在这里被问了很多次。 这些案例没有明确的利益证据(财产内部没有逻辑)。 更重要的是,使用一个字段,您可以获得一些最小的(纳米)速度优势,但与99.99%的情况无关
MS定义的指南建议使用
属性
,以提高代码的可扩展性和可维护性。因此,遵循该指导原则可以使不熟悉代码的人更容易阅读代码 我想你已经回答了你自己的问题
对于这样的简单案例,没有真正的优势。自动获取/设置方法是使用速记属性创建的:
public int Foo { get; set; }
对于需要进行转换的更复杂的示例,您可以灵活地使用显式get和set方法进行更改。有关此问题的讨论,请参阅或。在这个主题上还有10亿个相关的问题和资源,Google/SE搜索将公开这些问题和资源
我希望这会有所帮助。根据我的说法,使用“get set”提供了一个属性。基本上,您是在为变量提供get set属性的同时实现封装的概念。实际上,所有的指南都是关于创建可重用库的。在这里,当您创建一个
属性时(使用get/set),您还可以创建一个机会,在以后添加代码,当有人获取或设置值时执行该代码(如添加验证等),而无需更改代码的外部定义(因此无需重新编译其他库)。但是,如果您总是重新编译整个解决方案,而没有其他人使用该库,那么这没有任何价值
使用属性的另一个好处是可以限制谁可以获取或设置值。例如,每个人都可以获得该值,但只有派生类可以设置它(protected
)
尽管如此,仍然建议在属性为公共
(而不是私有
字段)时始终使用属性
我只在需要最佳性能时才公开字段(如连续访问百万次值)
总而言之
属性(获取/设置)对字段的好处:
- 能够在以后添加代码,而无需重新编译引用此代码的程序集
- 能够提供私有/受保护/内部设置和公共获取(或任何其他组合)
- 公共字段不是
物业的缺点:
public int Foo { get; set; }
- 访问速度较慢(读取和写入)
- 无法作为
ref
参数传递给方法
假设在类中有公共变量来存储数据。
但是,如果需要进行数据验证,则无法使用类中的公共变量进行验证。因为你无法控制他们。局外人、其他程序员、任何访问您的项目的人都可以在类中编辑这些公共变量
主要是为了控制对类中数据的访问,我们使用属性。它们仍然是变量,但在类的权限范围内。这些变量可以来自任何数据类型(例如字符串、Int、Bool、对象等)
根据您希望通过属性实现的内容/方式,可以使用三个主要选项插入属性
Get - access to the property and retrieve its value
Let - access to the property and update its value
Set - access to the property and used with objects
理解Get/Set方法的真正用途是至关重要的。我同意蒂加兰的评论
如果有人要干掉我,我想知道原因这个问题在这里被问了很多次
-所以找到一个重复的并投票关闭。我应该搜索什么来找到它?我试过“设置的好处”@Rawling:这类问题有不同的“形状”,可以用不同的方式解释。因此,与其简单地指出链接,不如试着听听我对这个问题的看法。但是,你不能稍后将库中的变量更改为一个属性,对使用该变量/属性的应用程序透明吗?不,如果你将公共字段更改为公共属性,你必须重新编译引用该字段的所有应用程序