




































































































其中我最感兴趣的是这一小段。












有点象可以根据函数返回值重载啊!但事实上它不是。IEnumerable.GetEnumerator()方法名(注:接口名.方法名()的写法,我没见过)和GetEnumerator()确实不一样。编译器如何来决定调用哪一个呢?我试了下,如果把public TokenEnumerator GetEnumerator()前的public去掉,则调用的是IEnumerator IEnumerable.GetEnumerator(),否则就调用TokenEnumerator GetEnumerator()方法。而IEnumerator IEnumerable.GetEnumerator()方法不能用public,编译器会报错。这样写法在java是编译都通不过的。这能不有解决接口方法名重的问题呢!我们来试下以下的代码。
























































如果 ti.IInterface1.fun(); ti.IInterface2.fun();这两句能编译通过并运行,就能解决接口中函数同名的问题了。事实上编译通不过!很遗憾!看来能调用接口名.方法名()的只能c Sharp自己的编译器了,我们手工办不到。