首页 新闻 会员 周边

System.IO.TextWriter.Write(char value) 为什么是个空方法呢

0
悬赏园豆:15 [已解决问题] 解决于 2013-09-03 16:30

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没什么关系吧

 

红红火火恍恍惚惚惚的主页 红红火火恍恍惚惚惚 | 初学一级 | 园豆:175
提问于:2013-09-03 15:22
< >
分享
最佳答案
0

因为 TextWriter 是 abstract class 。

收获园豆:15
Launcher | 高人七级 |园豆:45045 | 2013-09-03 15:28

再加5分,所有System.Console.WriteLine() 方法实现的根源在何处呢?

红红火火恍恍惚惚惚 | 园豆:175 (初学一级) | 2013-09-03 15:58
Launcher | 园豆:45045 (高人七级) | 2013-09-03 16:02

@1123155: 看你连看源码都看得这么不仔细,我就再多说两句,Console 的 Read/Write 方法内调用的代码是 Console.In.Read / Console.Out.Write ,注意 Console 的两个静态属性 In 和 Out,这是通过 StreamReader/StreamWriter 包装了 __ConsoleStream 类来实现的,而 __ConsoleStream  这是对 Win32 Console 的 std i/o handle 的封装。

Launcher | 园豆:45045 (高人七级) | 2013-09-03 16:08

@Launcher:

这是哪里啊?Win32 API?

.Net中哪个方法中看得出调用了API?

 

好像也不是abstract的原因,抽象方法没有大括号

abstract class ShapesClass

{

  abstract public int Area();  //抽象方法

}

红红火火恍恍惚惚惚 | 园豆:175 (初学一级) | 2013-09-03 16:12

@1123155: TextWriter 就是一个抽象类,它没有实现写操作,真正的写操作都是派生自 TextWriter 的子类自己实现的。你要问哪个方法看得出调用了 Win32 API 的话,我实在没那耐心一段代码一段代码在这里敲,只能面授。

Launcher | 园豆:45045 (高人七级) | 2013-09-03 16:17

@Launcher: 

对的,你说的是对的,通过StreamWriter来获取的,调用Win32 API的位置很深很深,我慢慢追,就在灯火阑珊处,15分送你

红红火火恍恍惚惚惚 | 园豆:175 (初学一级) | 2013-09-03 16:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册