什么时候我更喜欢财产而不是方法?因为当我使用属性时,以下代码更易读.
string agency = base.GetAgencyDetails();
string agency = base.Agency; //I could write same logic in getter of the property.
Run Code Online (Sandbox Code Playgroud)
Rud*_*ser 11
就个人而言,我会遵循MSDN指南.
通常,方法表示动作,属性表示数据.属性意味着像字段一样使用,这意味着属性不应该在计算上复杂或产生副作用.如果不违反以下准则,请考虑使用属性而不是方法,因为经验不足的开发人员会发现属性更易于使用.
如果你考虑它就很有意义,一种方法更适合于某些可能以某种方式改变数据的东西,并且当你检索一些数据并缓存它时,属性是完美的.
如果您使用显式支持的属性,您甚至可以在转换的情况下将两者结合使用:
private ObjType _myObjWithStringification;
private string _stringRepOfData;
public string StringRepresentation
{
get {
if (_stringRepOfData == null) {
_stringRepOfData = _myObjWithStringification.ToString();
}
return _stringRepOfData;
}
}
Run Code Online (Sandbox Code Playgroud)
Re:您的可维护性评论,我不确定它是否非常有效.如果你F12打算去你正在使用的属性的声明,你将直接去getter,就像你使用方法时你去方法体.
我不确定假设某个属性不会有任何自定义检索逻辑是安全的.