У меня есть пользовательская структура класса следующим образом.
public interface Stuff { }
public Thing : Stuff
{
public new String ToString() { return "That's the thing!"; }
}
Затем в других частях моего кода у меня есть метод, который принимает объект String в качестве параметра. Первая строка компилируется, а вторая нет. Я думал, что ToString вызывается по умолчанию при отправке объекта. И Stuff, будучи унаследованным от класса Object, должен иметь уже реализованный ToString (а также, в моем случае, затененный my сильная> реализация).
Thing thing = new Thing();
MustHaveString(thing.ToString());
MustHaveString(thing);
Что мне не хватает?
ToString
метод, а не переопределять существующий? Ик! (Но нет, ToString обычно не вызывается автоматически.) - person Jon Skeet   schedule 01.07.2013ToString
является виртуальным. - person Servy   schedule 01.07.2013ToString
. Когда вы создаете сложные типы, обычно методToString
выводит имя класса вызывающего объекта (поскольку оно не было переопределено). Так где у тебя проблема? :) - person CarlosB   schedule 01.07.2013ToString
определенно являетсяvirtual
. См. документацию. - person Daniel Hilgarth   schedule 01.07.2013