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

c中get前缀背后的原因#

  •  2
  • user5441558  · 技术社区  · 6 年前

    考虑到在c语言中,我们对带有getter和setter的属性有特定的语法,为什么有些属性是用方法(通常前缀为“Get”)而不是getter访问的?

    例如,为什么:

    var properties = object
        .GetType()
        .GetProperties();
    

    而不是使用getter,如:

    var properties = object
        .Type
        .Properties
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   CodeCaster    6 年前

    这个 Design Guidelines for Developing Class Libraries 可以这样说:

    如果成员表示该类型的逻辑属性,请考虑使用属性。

    GetType() 定义于 object ,所有类型的基类型。你不想 每个 键入始终具有 Type 所有物

    如果属性的值存储在进程内存中,并且该属性只提供对该值的访问,请使用属性而不是方法。

    据我所知,将CLR的内部元数据转换为PropertyInfo对象需要一些转换。

        2
  •  1
  •   Community CDub    4 年前

    这个 GetProperties() 答案很简单:它为每个调用返回一个新的属性数组(内部属性数组的筛选(仅公共)副本),并从 MSDN :

    在以下情况下,请使用方法而不是属性。

    该操作返回内部状态的副本(这不包括堆栈上返回的值类型对象的副本)。

    该操作返回一个数组。

    对于 GetType() 我不知道。