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:这类问题有不同的“形状”,可以用不同的方式解释。因此,与其简单地指出链接,不如试着听听我对这个问题的看法。但是,你不能稍后将库中的变量更改为一个属性,对使用该变量/属性的应用程序透明吗?不,如果你将公共字段更改为公共属性,你必须重新编译引用该字段的所有应用程序