我应该在我的C#程序中使用属性还是应该使用get / set访问器?

时间:2009-04-13 00:59:33

标签: c# properties coding-style

当我看到这句话时,我正在阅读一本名为C#Yellow Book的书,由Rob Miles发表:

  

程序员喜欢新的闪亮玩具。他们非常热衷于使用语言功能来炫耀。属性可能有点像这样。在考虑属性与get和set方法时,我更喜欢老式的get和set方法,因为你知道你在哪里使用这些方法。另一方面,如果以正确的方式使用,我可以看到属性可以使生活更轻松。

我不确定他的意思是什么。你们有什么建议? MS建议什么?

7 个答案:

答案 0 :(得分:18)

我认为你应该考虑一些非编程建议

  

在罗马时,像罗马人一样。

.NET具有根植于其所有库,设计器和代码生成器的属性。它几乎是平台不可分割的一部分。如果您选择使用get / set访问器而不是普通属性,那么您将创建一个库,其外观与其他程序员所期望的完全不同。

使用get / set访问器只会增加创建与各种工具不兼容的代码的机会。例如,有许多工具可以使用特殊的案例属性和字段,并为它们提供特殊功能。您将拥有等效的构造但没有工具支持。

答案 1 :(得分:8)

几年前,我把这本书的一部分写成了一个转到C#的Java程序员。我想我会重新审视下一版本的文本并使其更清晰。

如果你想确保你的类的用户知道某些代码在使用某个东西时会运行,那么将它放入一个方法就可以使它显式化。此外,使用方法允许您返回错误条件而不必抛出异常。由于编译器无论如何都将属性转换为方法,因此没有性能命中。

我在我编写的代码中经常使用属性,特别是对于像state这样的东西。我从来没有真正提倡不使用属性,更多的是确保你在正确的情况下使用正确的东西。

答案 2 :(得分:5)

我不知道Rob Miles是谁,但如果你的引用是准确的,那么我已经失去了对他的尊重。

.NET中的所有内容都使用属性。如果你的代码不使用属性,那么它将是唯一没有的代码。

答案 3 :(得分:2)

myObject.Property++;

myObject.SetProperty(myObject.GetProperty() + 1);

是啊..

当完成非平凡的计算/处理时,应使用显式的getter / setter方法,因此执行实际操作的地方。

答案 4 :(得分:0)

我爱属性。在“类库的设计指南”中,他们建议使用属性(特别是对于独立于其他状态的状态)。

答案 5 :(得分:0)

考虑这一点的最佳方式是与现实生活中的对象进行比较。让我们说你是一个现实生活中需要设计的人。在头发颜色,高度和宽度等方面,您会称之为某些属性?一旦你开始考虑这些方面,它会更有帮助,因为每个人都有自己的思考方式。

答案 6 :(得分:0)

如果你不使用Properties,你会失去一个非常突出的特性,我认为它在.NET中非常有用:绑定。你只能绑定到.NET中的属性,所以如果使用get / set访问器,你就不能很好地与其他人玩。