Boxing的概念
.net中的struct属于value type,所以分配是在stack上,而CLASS是分配在heap上的.把一个stack上的value type赋给一个reference会导致在heap中产生对这个value type的复制,而且这个复制的东西是system.object的子类.这种动作叫做boxing.
e.g. Struct size;
Size s = new Size(); //stack上的一个value type
IAdjustor itf = s; //boxing, heap上出现一个兼容system.object的Size 的复制
s=(Size)itf; //unboxing, 把heap上的复制回到stack上的value type
Array,
对于n维(rank) array, 有两种存储方式,一种是连续存储,C语言就是这样的,另一种叫jagged,每一个array的元素都是一个array,而且每个元素里面的array可以不一样长,所以叫jagged.
Dispose,
.net中希望把用户认为需要显示调用类似destructor的部分实现到dispose()函数里, java 的rule engine就需要对rule 色session 显示的调用dispose,
Equivalent
对于比较两个object是否相同,可以实现equals方法, 同时还可以实现getHashCode方法,如果getHashCode 不一样,则肯定两个object不同,如果hashcode一样,不能确定,可以再调用equals,getHashCode的调用开销比equals小很多.