【问题标题】:Variable of reference type..terminology problem引用类型的变量..术语问题
【发布时间】:2011-06-11 19:30:09
【问题描述】:

有以下代码:

 class X
    {
      public void Y(){}
    }


    X _x=new X();
    _x.Y();  //should I say Y is method of _x variable? It is easy but actually the variable contains just reference to object that has this method

   X newX=x;   //here I assign the value of variable x to variable newX. The value is reference 

【问题讨论】:

    标签: c# terminology


    【解决方案1】:

    Y 是类X 上的公共实例方法,在_x 引用的类X 的实例上调用。

    顺便说一句,这样的调用实际上被编译为类似

    call X::Y(_x)
    

    这是因为每个实例级方法都有一个隐式的第一个参数,它是对正在调用该方法的对象的引用(这就是 this 引用正确对象的方式)。

    【讨论】:

      【解决方案2】:

      以我最迂腐的心情,我会写:

      Y 是在X 类型中声明的无参数实例方法。它在_x 的值所引用的对象上调用。

      _x 本身既不是对象也不是引用——它是变量。)

      【讨论】:

      • 我在问我目前阅读的书中他们经常说:使用变量A的方法XY。
      • 如果你的心情比你最迂腐的心情更迂腐,你会在Y() 中删除()。 :-)
      • @Lojol:这并非完全不合理,只要您知道它们的意思。当我讨论作为方法调用的一部分究竟会发生什么的话题时,我倾向于迂腐——但如果我真的只对(比如说)字符串操作感兴趣,我不会很与术语一样精确,因为它最终变得比它的价值更冗长。
      【解决方案3】:

      通常这不是什么大问题,因为类和变量都有描述性名称,所以很清楚什么是什么。

      使用实际类的示例:

      builder 是一个变量,其中包含对StringBuilder 类实例的引用:

      StringBuilder builder = new StringBuilder();
      

      Append 方法是StringBuilder 类中的方法,而不是builder 变量中的方法。您正在调用 builder 所指的实例上的方法:

      builder.Append("asdf");
      

      【讨论】:

        猜你喜欢
        • 2011-10-11
        • 2017-03-18
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 2013-02-16
        • 1970-01-01
        • 2015-01-28
        相关资源
        最近更新 更多