static void main(string[] args)
{
Int32 y=5;
object o = y;
y=6;
Console.WriteLint(y+","+(Int32)o);
Console.ReadLine();
}发生了几次拆箱装箱?请给解释!
解决方案 »
- 大哥大姐“抓取网页源码”急求帮助,在线等。。。。。。
- SqlDataReader的问题
- c#重绘标题栏 windows7 和windows XP下显示不一样什么原因?
- C#中如何调用另一个线程中实例化的COM对象?
- 请问QQ可以象MSN那样的机器人,或者可以自己开发一个插件呢?
- 谁有《Asp.net2.0开发指南》电子书籍,其它中文版.net2.0 电子书也可 ?
- textBox.text的内容要以word文件方式输出,该怎么做
- 面试的时候遇到的问题
- 分不够再加!关于点击ListViewItem的问题!进者有分!
- 请问如何在C#程序中实现一个事务?
- Winform部署(安装项目)时,如何指定程序安装到"我的文档"下?
- button的颜色问题
{
Int32 y=5;
object o = y;//装箱
y=6;
Console.WriteLint(y+","+(Int32)o);//拆箱
Console.ReadLine();
}
进行的装箱拆箱算进去的话,就应该是3次
第一次是 object o = y
第二次和第三次是Console.WriteLine(),中的两个INT32类型,在Console.WriteLine执行时默认
让他们都调用ToString()
Console.WriteLine()在下面的红色部分。可以看出其做了什么 .locals init ([0] int32 y,
[1] object o)
IL_0000: nop
IL_0001: ldc.i4.5
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: box [mscorlib]System.Int32
IL_0009: stloc.1
IL_000a: ldc.i4.6
IL_000b: stloc.0
IL_000c: ldloc.0
IL_000d: box [mscorlib]System.Int32
IL_0012: ldstr ","
IL_0017: ldloc.1
IL_0018: unbox.any [mscorlib]System.Int32
IL_001d: box [mscorlib]System.Int32
IL_0022: call string [mscorlib]System.String::Concat(object,
object,
object)
IL_0027: call void [mscorlib]System.Console::WriteLine(string)
IL_002c: nop
IL_002d: call string [mscorlib]System.Console::ReadLine()
IL_0032: pop
IL_0033: ret
都是微软灌出来的习惯,诶。总有人爱这么写。用过vc的人基本都会写
Console.WriteLint(y+","+o.ToString());
或
Console.WriteLint("y,{0}",o);不过既然是考试,都逃不了弄些容易混淆的东西…
我要仔细点了…
拆箱发生在(int32)O
拆箱发生在(int32)O
支持楼上
进行的装箱拆箱算进去的话,就应该是3次
第一次是 object o = y
……
[/Quote]