1
26
我们以前有过这个主题,但现在什么都找不到了。 简而言之:你的需求可能会改变:如果现在没有健康检查,将来可能需要一个。但是,如果将公共字段更改为属性,则会破坏二进制兼容性:使用代码/库的每个客户机都必须重新编译。 这是 坏的 因为它可能要花很多钱。 从一开始就使用属性可以避免这个问题。这甚至对不属于库的代码也很重要。为什么?因为你永远不知道:代码(即使是高度特定于域的!)可能会证明有用,所以您希望将其重构到库中。如果您已经在使用属性来代替公共/受保护字段,那么重构过程显然变得容易得多。 此外,在C 3.0中编写公共属性很容易,因为您只需使用自动实现的属性,就可以节省大量代码:
将为您实现必要的支持字段和getter/setter代码。 我将添加一个个人注释:.net在这方面的行为有些懒惰。编译器可以随时将公共字段更改为属性,从而避免了这个问题。vb6已经为COM公开的类做了这项工作,我认为vb.net和c完全没有理由不这样做。也许是编译器团队中的某个人(jared?)可以对此发表评论。 |
2
8
简而言之:
|
3
4
Jeff Atwood has blogged about it :
|
4
3
将来将字段更改为属性被视为 突破变化 . 字段被视为类的实现细节,公开它们会破坏封装。 |
5
2
您还可以保护写访问,并允许使用属性进行读访问:
|
6
1
如果你在一个封闭的环境中工作——你不开发一个SDK,所有的类都在同一个项目框架中使用——没有区别。 通常的论点是,“将来可能需要对值进行一些检查,这样对属性就更容易了”。我一点也不买。 使用公共字段更易读、装饰更少且更易于使用。 |
8
0
对。 考虑一个公共变量,它现在包含一个字符串,您可以简单地设置它。但是,如果您决定公共变量应该包含一个应该用字符串初始化的对象,那么您必须使用原始对象更改所有代码。但是,如果您使用了setter,那么只需更改setter,就可以使用提供的字符串初始化对象。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |