Почему я могу вызывать ToString () много раз для одного и того же объекта? - PullRequest
2 голосов
/ 13 февраля 2011
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string word = "Shazam!";
            Console.WriteLine(word.ToString().ToString().ToString().ToString());
            Console.ReadKey();
        }
    }
}

Может кто-нибудь сказать мне, почему я могу так часто вызывать ToString ()?Просто любопытно, спасибо!

Ответы [ 7 ]

6 голосов
/ 13 февраля 2011

Поскольку string сам имеет метод ToString() (все объекты делают).

Вы вызываете ToString() сначала на word, затем на результате этого вызова, затем нарезультат , который вызов и т. д. В основном каждый последующий вызов действует на результат предыдущего.

Конечно, он не ограничен ToString().Например:

int x = new object().ToString().Substring(0, 2).Length;

Это вызывает ToString() для нового объекта, затем Substring для возвращаемой строки, затем Length для этой подстроки.

1 голос
/ 13 февраля 2011
  1. Все есть объект.
  2. http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx - метод класса объекта.

Когда вы применяете toSting к объекту, он возвращает строку типа объекта. Но это снова объект, и вы можете применить к нему метод toString. Таким образом, ваш цикл бесконечен. Как каждая новая вещь будет объектом.

1 голос
/ 13 февраля 2011

.ToString() возвращает строковый объект. Он также реализует .ToString(), который в основном возвращает this.

0 голосов
/ 13 февраля 2011

здесь происходит цепочка функций при вызове ToString(), потому что ToString() возвращает строковый объект

0 голосов
/ 13 февраля 2011

Метод ToString() возвращает строку, представляющую объект.

Если вы вызываете метод ToString() строки, он возвращает строку - с тем же содержимым, что и он сам. Если вы сделаете это несколько раз, вы получите другой строковый объект, в основном ссылающийся на ту же самую строку.

0 голосов
/ 13 февраля 2011

ToString () просто возвращает строковое представление в виде объекта String.http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

Таким образом, word.ToString () возвращает объект String, представляющий слово.Объект String имеет функцию ToString (), которая возвращает объект String, представляющий объект String ... и т. Д.

0 голосов
/ 13 февраля 2011

Ну, метод ToString() возвращает System.String, а System.String также имеет метод ToString(), поэтому вы вызываете ToString() для объекта, возвращенного из предыдущего ToString().

...