代码之家  ›  专栏  ›  技术社区  ›  xofz

“告诉,不要问”:非void方法和getter之间的区别是什么?

  •  1
  • xofz  · 技术社区  · 16 年前

    编辑:

    int CalculateSomething();
    
    int Calculation { get; }
    

    事实上,我可以更改 CalculateSomething 如果我想完全忘记的话,就把这些值传递给它。所以我的问题改为:getter和非void方法之间的根本区别是参数可以传递到非void方法中吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Jack Marchetti    16 年前

    这不是最大的区别吗,不能将变量传递给getter?

    功能:

    private int Getyear(datetime date) { }
    

    a财产:

    private DateTime GetDate {
        get {return _date};
    }
    

    你不能用getter属性这么做,是吗?

        2
  •  9
  •   Craig Stuntz    16 年前

    微软有 guidance for choosing between properties and methods

    • 如果成员表示类型的逻辑属性,请考虑使用属性。
    • 如果属性的值存储在进程内存中,并且该属性仅提供对该值的访问,请使用属性而不是方法。
    • 在下列情况下,请使用方法而不是属性。
      • 该操作比字段集慢几个数量级。如果您甚至考虑提供操作的异步版本以避免阻塞线程,那么该操作很可能太昂贵而无法成为属性。特别是,访问网络或文件系统的操作(不是一次初始化)很可能是方法,而不是属性。
      • 该操作是一种转换,例如Object.ToString方法。
      • 该手术有明显的副作用。请注意,填充内部缓存通常不被视为可观察的副作用。
      • 该操作返回内部状态的副本(不包括堆栈上返回的值类型对象的副本)。