Java和C#的一些区别,不定期补充

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