Deem uma olhada nesse documento:
http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5e-f87a44af3db9/SpecificationVer2.doc
Resumo:
C#2 vem com suporte a:
-Generics, de forma bem mais abrangente e poderosa que a versao java
-Anonimous functions, suporte a definir funcoes no lugar onde um delegate eh esperado
-Iterators, funcionam como os generators do python, uma ideia bem legal, basicamente 1 implementacao mutilada de continuations.
-Partial types, poder definir suas classes em multiplos arquivos.
Pessoalmente gostaria de ver suporte mais completo de generics em java, mas longe da locura do c++.
Funcoes anonimas so faria sentido se java tivesse suporte a referencia para funcoes, outra coisa que seria uma maravilha.
Iterators da forma como estao implementados no C#2 acho que nao valem a pena, exigiria uma mudanca enorme na JVM para um recurso proposto de forma limitada.
Partial types seria A grande burrada, isso estimularia a criacao de muito lixo. Vide as anti-patterns de blob e swiss army knife. “na nossa aplicacao, cada desenvolvedor modifica a classe XXX no seu proprio arquivo, funciona errr, bem! Mas so as vezes, quando faz calor aqui na siberia”
