Gav*_*vin 52 c# automatic-properties c#-3.0
我对C#中的自动属性有点困惑,例如
public string Forename{ get; set; }
Run Code Online (Sandbox Code Playgroud)
我知道你不需要声明私有变量来保存代码,但是当你不使用任何get或set逻辑时,属性的重点是什么?为什么不用
public string Forename;
Run Code Online (Sandbox Code Playgroud)
我不确定这两个语句之间有什么区别,如果你想要额外的get/set逻辑,我一直认为你使用过属性?
Mat*_*tin 118
属性可以将代码放入其中而不会破坏合同,字段不能将代码放入其中而不将其更改为属性(并破坏接口).属性可以是只读或只写,字段不能.属性可以是数据绑定,字段不能.
Skl*_*vvz 15
你可以写
public string Forename{ get; private set; }
Run Code Online (Sandbox Code Playgroud)
获得只读属性......仍然没有真正的属性那么多功能,但它对某些作品来说是一种妥协.
Ree*_*sey 13
我不确定这两个语句之间有什么区别,如果你想要额外的get/set逻辑,我一直认为你使用过属性?
在第一种情况下,编译器将自动为您添加一个字段,并包装该属性.它基本上等同于:
private string forename;
public string Forename
{
get
{
return this.forename;
}
set
{
this.forename = value;
}
}
Run Code Online (Sandbox Code Playgroud)
在字段上使用属性有许多优点.即使您不需要某些特定原因(例如数据绑定),这也有助于为您的API提供面向未来的证明.
主要问题是,如果你创建一个字段,但是在应用程序的v2中,需要一个属性,你就会破坏API.通过预先使用自动属性,您可以随时更改API,而无需担心源或二进制兼容性问题.
小智 6
这意味着您希望稍后添加逻辑.
如果您这样做并从头开始将其作为属性,则不必重建依赖代码.如果将其从变量更改为属性,则必须执行此操作.
| 归档时间: |
|
| 查看次数: |
20440 次 |
| 最近记录: |