C# 有无符号整数,Java 呵呵。
C# 有运算符重载,Java 呵呵。
C# 支持传引用(ref),Java 呵呵。
C# 能把对象放栈上(struct),Java 呵呵。
C# 的类型参数可以是基本类型,Java 呵呵。
C# 可以定义类型别名(using a = b),Java 呵呵。
可以很明确地说 C# 更像 C++,而且是设计之初就这么干的。
C#。
C#有unsafe特性,你想操作非托管内存和直接使用指针,打开unsafe开关即可。在非unsafe环境下,C#依然可以通过一些类和函数操作指针。而Java没有任何显式指针支持。
C#可以定义struct。Java不能。
C#提供了P/Invoke,要调用平台API很容易,Java还需要用其他语言加上JNI写个中间调用和类型转换。
C#提供了更丰富的基本类型 (unsigned),Java没有。
C#也拥有条件编译语句(预处理),Java没有。
C# 的 .NET Core,Mono等多平台运行时。且 .NET 即将支持的Web Assembly (之前有把LLVM语言转换成Web运行的工具集)。