У меня есть структура пользовательского класса следующим образом.Должно ли мы всегда указывать ToString() явно?
public interface Stuff { }
public Thing : Stuff
{
public new String ToString() { return "That's the thing!"; }
}
Затем, в других частях моего кода у меня есть метод, который принимает Струнный объект в качестве параметра. Первая строка компилируется, а вторая - нет. Я думал, что ToString был вызван по умолчанию при отправке в объект. И Материал, наследуется от Object класса должны иметь ToString уже реализованы (а также, в моем случае, омрачены моей реализации).
Thing thing = new Thing();
MustHaveString(thing.ToString());
MustHaveString(thing);
Что мне не хватает?
Почему бы вам не объявить новый метод 'ToString', а не переопределить существующий? Ик! (Но нет, ToString обычно не вызывается автоматически.) –
@JonSkeet Поскольку в соответствии с [интернет] (http://social.msdn.microsoft.com/Forums/en-US/65e02299-300f-4b74-8f0a- 679f490605f5/new-vs-override-), * override * может использоваться в * виртуальных * методах и * ToString * в * Объекте * нет. –
@ KonradViltersten 'ToString' * является * виртуальным. – Servy