Namespaces: System.IO
Class: TextWriter
mscorlib.dll 4.0.0
[_DynamicallyInvokable]
public virtual void Write(char value)
{
}
用Reflector7查看System.Console.Write() 方法,然后一直追追到底,追到 System.IO.TextWrite.Wite(char value) 方法上,可这方法里面什么也没有!
发现.NET中一切与一般Write有关的函数,其根源就是System.IO.TextWrite.Wite(char value) 方法,但又看不到其内部实现原理。
有人说是方法前面virtual修饰符的原因,好像和virtual没什么关系吧
因为 TextWriter 是 abstract class 。
再加5分,所有System.Console.WriteLine() 方法实现的根源在何处呢?
@1123155: 看你连看源码都看得这么不仔细,我就再多说两句,Console 的 Read/Write 方法内调用的代码是 Console.In.Read / Console.Out.Write ,注意 Console 的两个静态属性 In 和 Out,这是通过 StreamReader/StreamWriter 包装了 __ConsoleStream 类来实现的,而 __ConsoleStream 这是对 Win32 Console 的 std i/o handle 的封装。
@Launcher:
这是哪里啊?Win32 API?
.Net中哪个方法中看得出调用了API?
好像也不是abstract的原因,抽象方法没有大括号
abstract class ShapesClass
{
abstract public int Area(); //抽象方法
}
@1123155: TextWriter 就是一个抽象类,它没有实现写操作,真正的写操作都是派生自 TextWriter 的子类自己实现的。你要问哪个方法看得出调用了 Win32 API 的话,我实在没那耐心一段代码一段代码在这里敲,只能面授。
@Launcher:
对的,你说的是对的,通过StreamWriter来获取的,调用Win32 API的位置很深很深,我慢慢追,就在灯火阑珊处,15分送你