代码改变世界

扩展方法的一个有趣现象

2008-08-05 15:51  JimLiu  阅读(338)  评论(0编辑  收藏  举报

扩展方法是.NET 3.0的新特性之一,编译器通过一些伪装使得一个静态方法“看起来”像实例方法,这样会让一些代码显得更优雅和方便。

但面具终究是面具,在一定的场合下,就可以看出扩展方法的“本来面目”了。

一个引用为null的对象在调用实例方法的时候是会引发NullReferenceException的,但是当对一个引用为null的对象调用扩展方法的时候却不会(当然,前提是这个扩展方法内的代码不会因为这个对象引用为null而引发异常),这种情况下,就会看穿扩展方法其实就是一个静态方法的本来面目了。