泛型有多种实现,c++,C#, java都是不一样的
c#的泛型不需要装箱拆箱,因为JIT编译的时候就绑定了List<Value>就会产生一个"list of value"
java的不是,java的泛型只是语法糖,也就是运行期jvm会给你进行装箱拆箱的操作,也就是java没有"List of value"只是一个新的list实例
而c++,编译的时候就绑定了,也就是对于一个新的T,如果使用list<T>,则产生一个新的类型list<T>,因为C++没有vm,所以其实c++的template机制和vm机制下的generics完全不同
也就是说比如List<int>,就会生成intOfList这样的类,里面有个Add(int)的函数。
而不是Add(object)这样的函数
这样参数传递的时候,就避免了装修拆箱。
嗯
详细答案:
http://stackoverflow.com/questions/31693/what-are-the-differences-between-generics-in-c-sharp-and-java-and-templates-i