什么时候我更喜欢财产而不是方法?

dee*_*een 3 .net c# c#-4.0

什么时候我更喜欢财产而不是方法?因为当我使用属性时,以下代码更易读.

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,就像你使用方法时你去方法体.

我不确定假设某个属性不会有任何自定义检索逻辑是安全的.