Как работает метод.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#.
Метод ToString() определен в базовом классе System.Object и, следовательно, доступен для всех типов и параметров.
Реализация по умолчанию ToString(), предоставляемая базовым классом system.object, даст вам полное имя типа, включая пространство имен.
Если вам не нужна реализация по умолчанию, вы можете переопределить метод ToString(). Да, метод ToString() может быть переопределен. И где ты это отвергаешь? Вы переопределяете его в классе, где вы не хотите его реализацию по умолчанию.
В дополнение ко всем другим ответам важно понимать, что части .NET API, которые неявно используют
System.String.Format()
, такой как
Write()
и
WriteLine()
методы, найденные в
TextWriter
,
Console
,
StringBuilder.Append()
и
StringBuilder.AppendLine()
и т. д., и, конечно,
string.Format()
Сама реализация, будет использовать метод для форматирования объекта, если не указано явное форматирование.
Это означает, что все, что относится к
ToString()
выше, также применимо ко всем этим другим сценариям.