Подтвердить что ты не робот

Почему тип строки имеет метод .ToString()?

Почему тип строковых данных имеет метод .ToString()?

4b9b3361

Ответ 1

Тип System.String, например почти типы в .NET, происходит от System.Object. Object имеет метод ToString(), и поэтому String наследует этот метод. Это виртуальный метод, и String переопределяет его, чтобы вернуть ссылку на себя, а не использовать реализацию по умолчанию, которая должна возвращать имя типа.

Из Reflector это реализация ToString в Object:

public virtual string ToString()
{
    return this.GetType().ToString();
}

И это переопределение в String:

public override string ToString()
{
    return this;
}

Ответ 2

Как указывает Марк, он просто возвращает ссылку на себя. Но почему это важно? Все базовые типы должны возвращать строковое представление самих себя. Представьте себе функцию каротажа, которая работает следующим образом:

public void Log(object o) {
    Console.WriteLine(o.ToString());
}

Это позволяет вам передавать любой базовый тип и регистрировать его содержимое. Не вернув строку, она просто вывела бы "String", а не содержимое. Вы также можете сделать то же самое с функцией шаблона.

Думаешь, это глупо? Это в основном то, что делают функции форматирования строк. Он вызывает "ToString", когда вы это делаете:

Console.WriteLine("{0}", myString);

Ответ 3

String - это объект, это не тип данных. Поскольку String является объектом, он наследует от Root Object метод ToString().

Это как в Java, Objective-C или Scala:)

Ответ 4

Это даже верно для java, я думаю, что большинство языков программирования с объектно-ориентированным программированием имеют это строковое представление объектов, о которых идет речь, поскольку каждый класс, который вы создаете по умолчанию, extedns из Object, таким образом, приводит к методу toString(), помните, что он применим только к объектам не для предикатных типов.

Ответ 5

Любой объект в С# имеет строковый метод, хотя я не могу придумать причину, по которой вы производите строку для строки в момент, когда ToString() наследуется от типа объекта, что, конечно, строка является примером.

Ответ 6

Вы получите Null Reference Exception, если ваша строка NULL, и вы используете .ToString();

Следующее выдает:

string.Format("msgBoxTitle = {0}", msgBoxTitle.ToString())

Лучше всего писать... Это не будет бросать.

string.Format("msgBoxTitle = {0}", msgBoxTitle)