谁给我讲讲装箱拆箱啊`最好用例题using System;
using System.Collections.Generic;
using System.Text;namespace box
{
class Program
{
static void fun(object o)
{
o = 2;
Console.WriteLine(o);
} static void Main()
{
int i = 1;
object obj = i; //隐式装箱
Console.WriteLine(i);
fun(obj);
i = (int)obj; //拆箱
Console.WriteLine(i);
}
}
}
结果显示
1
2
1Main()中最后一句输出的i=1 i的值没有变 是因为函数fun中的o指向了另一片内存 与Main()的obj无关
他不像c语言的指针一样int i = 5,*p;
p=&i;
*p=6;
i也就=6了
我说得对么 各位给我讲讲 我总以为C#中的引用类型=c语言的指针
using System.Collections.Generic;
using System.Text;namespace box
{
class Program
{
static void fun(object o)
{
o = 2;
Console.WriteLine(o);
} static void Main()
{
int i = 1;
object obj = i; //隐式装箱
Console.WriteLine(i);
fun(obj);
i = (int)obj; //拆箱
Console.WriteLine(i);
}
}
}
结果显示
1
2
1Main()中最后一句输出的i=1 i的值没有变 是因为函数fun中的o指向了另一片内存 与Main()的obj无关
他不像c语言的指针一样int i = 5,*p;
p=&i;
*p=6;
i也就=6了
我说得对么 各位给我讲讲 我总以为C#中的引用类型=c语言的指针
using System;
using System.Collections.Generic;
using System.Text;namespace box
{
class Program
{
static void fun(ref object o)
{
o = 2;
Console.WriteLine(o);
} static void Main()
{
int i = 1;
object obj = i; //隐式装箱
Console.WriteLine(i);
fun(ref obj);
i = (int)obj; //拆箱
Console.WriteLine(i);
}
}
}
装箱把数据从栈里移入了堆里,拆箱反过来
装箱拆箱是非常消耗系统资源的,所以应该尽量避免,在.NET Framework 2.0里引入了泛型的概念,使用泛型可以很有效地避免装/拆箱
我知道了 谢谢你们