为什么Java有允许匿名类实现接口而C#没有。 因为Java没有委托,而C#有委托。 因此,在Java中,如果我们想实现事件机制或者传一个方法,一般是使用接口。那么定义一个类去实现接口是多么麻烦的事情。 你在Java中能看到大量的只有一个方法的接口,比如Runnable。 而C#已经有了匿名委托了,使用委托比使用接口更简单,没必要再画蛇添足了。 事实上Java饶了弯路,它们现在也开始支持Lambda表达式,而且还不得不出于兼容的考虑,创造了一个雌雄同体的怪异语法约定——那种只有一个方法的接口,可以用Lambda表达式表示。 如果你用C#,你应该用纯正的C#的思维去编写程序,而不是满脑子如何把某语言的语法搬过来。那种说什么语言不同,思维都一样的人,不是大学里面充耳不闻窗外事的迂腐的老师,就是啥也不会就想学点皮毛混饭吃的菜鸟。