Как работает метод.ToString()?

Иногда, когда я звоню в класс .ToString() метод, он возвращает полное имя класса. Но для некоторых классов / структур (например, Int32) возвращает объекту соответствующую строку (значение целого числа). Означает ли это Int32 класс переопределяет ToString() метод и классы, которые возвращают полностью определенные имена, не переопределяют его, а просто вызывают base (Object"S) ToString() метод? Ли Object.ToString() реализация просто возвращает полностью определенное имя класса?

4 ответа

Решение

Иногда, когда я звоню ToString Метод возвращает полное имя типа времени выполнения объекта, получившего вызов.

Правильный.

Но для некоторых типов, таких как System.Int32, ToString возвращает значение получателя, преобразованное в строку.

Правильный.

Ли System.Int32 структура переопределить ToString метод?

Да.

Есть ли другие типы, чьи ToString методы возвращают полное имя типа без переопределения ToString?

Это, вероятно, так, да. Конечно, они могли бы переопределить метод и заставить метод переопределения делать то же самое, что и метод базового класса, но это было бы немного бессмысленно.

Так что в тех случаях, звоня ToString просто вызывает System.Object реализация ToString, который возвращает полностью определенное имя?

Правильный.

Вы, кажется, хорошо понимаете, как это работает. Мое единственное исправление было бы отметить, что System.Int32 это структура, а не класс.

Вы даже пытались найти ответ на свой вопрос?

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

ToString является основным методом форматирования в.NET Framework. Он преобразует объект в его строковое представление, так что он подходит для отображения. (Информацию о поддержке форматирования в.NET Framework см. В разделе Типы форматирования.)

Реализация по умолчанию метода ToString возвращает полное имя типа объекта, как показано в следующем примере.

Поскольку Object является базовым классом всех ссылочных типов в.NET Framework, это поведение наследуется ссылочными типами, которые не переопределяют метод ToString. Следующий пример иллюстрирует это. Он определяет класс с именем Object1, который принимает реализацию по умолчанию всех членов Object. Его метод ToString возвращает полное имя типа объекта.

Несколько моментов, касающихся метода ToString() в C#.

  1. Метод ToString() определен в базовом классе System.Object и, следовательно, доступен для всех типов и параметров.

  2. Реализация по умолчанию ToString(), предоставляемая базовым классом system.object, даст вам полное имя типа, включая пространство имен.

  3. Если вам не нужна реализация по умолчанию, вы можете переопределить метод ToString(). Да, метод ToString() может быть переопределен. И где ты это отвергаешь? Вы переопределяете его в классе, где вы не хотите его реализацию по умолчанию.

В дополнение ко всем другим ответам важно понимать, что части .NET API, которые неявно используют System.String.Format(), такой как Write() и WriteLine() методы, найденные в TextWriter, Console, StringBuilder.Append() и StringBuilder.AppendLine()и т. д., и, конечно, string.Format() Сама реализация, будет использовать метод для форматирования объекта, если не указано явное форматирование.

Это означает, что все, что относится к ToString() выше, также применимо ко всем этим другим сценариям.

Другие вопросы по тегам