若定义结构体S如下:
struct S
{
    ...
}S s = new S();Object o = (Object)s;则下面语句是否会发生unboxing?
o is S;

解决方案 »

  1.   

    不会。
    这时不需要unboxing的结果,
    也有可能编译器在内部先unboxing再返回判断结果,
    但对程序员来说,这些都是不可见的。
      

  2.   

    虽然对程序员来说,是不可见的,但若有unboxing就必然有系统开销,所以希望清楚地了解一下。
      

  3.   

    没有必要.
    .net framework是底层系统不相关的, 不同的系统会有不同的实现.
    而且对于Windows系统来说,这点开销是可以忽略的至于到底有没有unboxing, 只有研究微软算法的人才知道吧!
      

  4.   

    struct 不是值类型的么?应该不会吧
      

  5.   

    to 点点: s被装箱在o中,运行o is S;语句时,为判断o中的数据是否是S类型,可能是要拆箱的,但不确定是否真的拆箱了。