当我试图操纵类中的字段时,应该使用C#中的Properties.但是当涉及复杂的计算或数据库时,我们应该使用getter/setter.
它是否正确?
你什么时候使用s/getter属性?
.NET设计指南在" 属性与方法"部分中提供了对此问题的一些答案.
基本上,属性与字段具有相同的语义.你不应该让属性抛出异常,属性不应该有副作用,顺序无关紧要,属性应该相对快速地返回.如果发生任何这些事情,最好使用一种方法.指南还建议使用返回数组的方法.
在决定是否使用属性或方法时,如果我将其视为字段,则会有所帮助.我想到了这个属性的行为,并问自己,"如果这是一个课堂上的一个领域,如果它的表现如此,我会感到惊讶吗?" 例如,考虑TcpClient.GetStream方法.它可以根据是否建立连接抛出几个异常,并且在尝试获取流之前配置TcpClient很重要.因此,它是一个Get方法而不是属性.
如果你仔细看看设计指南,你会发现它通常不是一个偏好的问题; 在某些情况下使用方法而不是属性是有充分理由的.