svb*_*net 4 .net c# properties
如果我想要一个只读属性,我会写它:
public int MyProperty { get { //Code goes here } }
Run Code Online (Sandbox Code Playgroud)
但是,Microsoft示例(以及我见过的一些其他示例)的编写方式如下:
public int MyProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么区别,我应该开始写这样的属性吗?
正如您在第二个示例中所看到的,您可以省略属性的实现.然后,.NET将自动为属性创建一个局部变量,并实现简单的获取和设置.
public int MyProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)
实际上相当于
private int _myProperty;
public int MyProperty {
get { return _myProperty; }
private set { _myProperty = value; }
}
Run Code Online (Sandbox Code Playgroud)
写作
public int MyProperty { get; }
Run Code Online (Sandbox Code Playgroud)
根本不起作用,因为自动属性需要实现一个getter 和一个setter
public int MyProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)
留下可能返回任何属性的属性int,但只能在当前类中更改.
public int MyProperty { get { ... } }
Run Code Online (Sandbox Code Playgroud)
创建只读属性.
问题是:你需要什么?如果您已经有一个在您的类中使用的成员变量,并且您只想使用属性返回当前值,那么您完全可以使用
public int MyProperty { get { return ...; }}
Run Code Online (Sandbox Code Playgroud)
但是,如果您想要一个只读属性,您需要在代码中设置(而不是从其他类),而不显式声明成员变量,您必须采用该private set方法.
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |