Переменная ссылочного типа. Терминологическая проблема - PullRequest
1 голос
/ 19 января 2011

Имея следующий код:

 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 

Ответы [ 3 ]

1 голос
/ 19 января 2011

В моем самом педантичном настроении я бы написал:

Y - метод экземпляра без параметров, объявленный в типе X.Он вызывается для объекта, на который ссылается значение _x.

(_x сам по себе не является ни объектом, ни ссылкой - это переменная.)

1 голос
/ 19 января 2011

Обычно это не большая проблема, потому что классы и переменные имеют описательные имена, поэтому довольно ясно, что к чему.

Пример использования фактического класса:

builder - это переменнаясодержит ссылку на экземпляр класса StringBuilder:

StringBuilder builder = new StringBuilder();

Метод Append - это метод в классе StringBuilder, а не метод в переменной builder.Вы вызываете метод в экземпляре, на который ссылается builder:

builder.Append("asdf");
1 голос
/ 19 января 2011

Y - это метод экземпляра pubilc для класса X, который вызывается для экземпляра класса X, на который ссылается _x.

Кроме того, такой вызовфактически скомпилированный как-то вроде

call X::Y(_x)

Это потому, что каждый метод уровня экземпляра имеет неявный первый параметр, который является ссылкой на объект, к которому вызывается метод (это то, как this относится кнужный объект).

...