在这两者之间:
有财产:
class WithProperty
{
public string MyString {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
有了字段:
class WithField
{
public string MyString;
}
Run Code Online (Sandbox Code Playgroud)
显然我应该选择第一个.为什么?
我听说过这里的观点是允许接口更改,但如果我有第二个,并将其更改为第一个,则不需要更改其他代码.重新编译时,所有内容都将指向该属性.
我错过了一些重要的东西吗?
dri*_*iis 19
最重要的区别在于,如果您使用字段,以后需要将其更改为属性(例如,强制执行某些验证),则需要重新编译调用代码的所有库.如果名称保持不变,您可以编译完全相同的代码 - 但代码的使用者仍然需要重新编译.这是因为在字段和属性之间生成的用于获取值的IL是不同的.如果它已经是属性,则可以在不强制代码消费者更改的情况下进行更改.
这对您来说可能是也可能不是问题.但该属性的代码量几乎相同,被认为是最佳实践.我总是去找房产.