Java和C#的一些区别,不定期补充
- Object
- Java所有引用类型父类都是Object(所以基础类型和Object不能强转)
- C#万事万物基于Object(包括值类型与引用类型)
- 泛型
- Java的基础类型不能用泛型,因为不能强转为Object。Java泛型在编译后实际上放入时都是先强转Object类型,在取出的时候强转为实际类型。这叫做“类型擦除”。对于运行期的Java语言来说,ArrayList
与ArrayList 就是同一个类,所以说泛型技术实际上是Java语言的一颗语法糖。
Object o = (Object)1; //这种代码可以编译运行,是因为有个装箱操作,别误会了
- C#任何类型都可以用作泛型。因为在IL语言中,泛型就是一个占位符。List
与List 就是两个不同的类型,它们在系统运行期生成,有自己的虚方法表和类型数据,这种实现称为“类型膨胀”。