c# - 为简单变量设置 get set 有什么好处

标签 c# get set

<分区>

Possible Duplicate:
Public Fields versus Automatic Properties

我认为这个问题会在某个地方得到解答,但我没有在通常的地方找到它。我在想,这样做有什么好处

private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}

public int foo {get; set;}

刚好

public int foo;

如果需要更复杂的操作,我可以看到好处,但对于像这样的简单案例有什么好处?

最佳答案

实际上,所有指南都是关于创建可重用库的。在那里,当您创建一个 property(使用 get/set)时,您还创造了稍后添加代码的机会,当有人获取或设置该值时(例如添加验证等)而不更改代码的外部定义(因此不需要重新编译其他库)。但是,如果您总是重新编译整个解决方案并且没有其他人在使用该库,那么这就没有任何值(value)。

使用属性的另一个好处是您可以限制谁可以获取或设置值。例如,每个人都可以获得该值,但只有派生类可以设置它(protected)。

这就是说,仍然建议始终在 public 属性(与 private 字段相对)时使用属性。

我只在需要最佳性能时才公开字段(例如连续访问该值一百万次)。

总结一下

属性(获取/设置)对字段的好处:

  • 能够在以后添加代码而无需重新编译引用它的程序集。
  • 能够提供私有(private)/ protected /内部集和公共(public)获取(或任何其他组合)。
  • 公共(public)字段不是 CLS compliant .

属性的缺点:

  • 访问速度较慢(读写)。
  • 不能作为 ref 参数传递给方法。

关于c# - 为简单变量设置 get set 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13304763/

相关文章:

c# - 整数是如何存储在内存中的?

symfony - handleRequest($request) 不适用于 Symfony 2 中的 "GET"方法

php - 代码未在 $.get() 成功处理程序内运行

java - 使用数组实现 Set 类

java - Hibernate OneToOne 关系 java.lang.NullPointerException

c# - .NET Core : IFileProvider. GetDirectoryContents 递归不起作用

c# - 将 IEnumerable<int> 转换为 IEnumerable<long> 失败

c# - Xamarin 按钮命令绑定(bind)

swift - 如何获取 URL "title"标记值?

hash - 如何建模基于路径的数据