TextReader является абстрактным классом, так как она может иметь экземпляр консоли.Мастер?
Вы логически правы, но его (я бы сказал) вообще понимал, что, когда вы говорите: «У меня есть экземпляр [абстрактного класса]», что вы на самом деле имеете в виду: «У меня есть экземпляр конкретного класс, который наследует абстрактный класс ». То же самое и с интерфейсами, вы можете сказать: «У меня есть экземпляр IFoo», где вы на самом деле имеете в виду «У меня есть экземпляр класса, который соответствует контракту, установленному IFoo».
Для вашего конкретного вопроса, disassembly is available И вы можете видеть, что вы в основном правы.действительный тип - это, конечно, конкретный класс, который наследует TextReader
. Он использует TextReader.Synchronized
вокруг экземпляра StreamReader
.
....
tr = TextReader.Synchronized(new StreamReader(s, enc, false,
_DefaultConsoleBufferSize, false));
....
Вы уверены, что это не просто вызов TextReader.Synchronized, который возвращает этот тип. Под ним действительно выглядит «StreamReader» из [дизассемблирования] (http://www.dotnetframework.org/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/clr/ src/BCL/System/Console @ cs/1305376/Console @ cs) – Jamiec
@Jamiec обновить мой ответ с помощью цепочки украшения, как я мог бы отслеживать его –