gpt4 book ai didi

c# - 为什么我应该使用自动实现的属性而不是字段?

转载 作者:可可西里 更新时间:2023-11-01 08:03:03 25 4
gpt4 key购买 nike

两者之间:

具有属性:

class WithProperty
{
public string MyString {get; set;}
}

带字段:

class WithField
{
public string MyString;
}

显然我应该选择第一个。为什么?

我听说这里的重点是允许接口(interface)更改,但是如果我有第二个,并将其更改为第一个,则不应使用其他代码永远必须改变。重新编译时,一切都会指向属性(property)代替。

我是不是漏掉了什么重要的东西?

最佳答案

最重要的区别在于,如果您使用一个字段,然后需要将其更改为一个属性(例如,强制执行某些验证),那么所有调用您的代码的库都需要重新编译。确实,如果名称保持不变,您可以编译完全相同的代码——但是代码的使用者仍然需要重新编译。这是因为为获取值而生成的 IL 在字段和属性之间是不同的。如果它已经是一个属性,您可以进行更改而无需强制代码的使用者进行更改。

这对您来说可能是问题,也可能不是问题。但是代码量的属性几乎相同,并且被认为是最佳实践。我总是会去买房。

关于c# - 为什么我应该使用自动实现的属性而不是字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com