帮我看看 c# 装箱的问题 结果为什么不改变?谢谢~~
namespace Example3{
class DataypeTest
{
static void Main(string[] args)
{
int val = 100;
Console.WriteLine("该变量的初始值为 {0}",val);
object obj = val;
Test(obj);
int num = (int)obj;
Console.WriteLine("该变量的初始值为 {0}",num);
}
static void Test(object getVal)
{
int temp = 10;
getVal = temp * 20;
}
}
} --------------------编程问答-------------------- Test(ref object getVal) --------------------编程问答-------------------- 很简单,这一行:
object obj = val;
执行后obj是值类型(int),然后作为参数传入Test方法,在方法内部值虽然改变但由于没有加上"ref",所以在方法外部其值依然不变,最后传给num依然是100。
倘若把程序改成:
static void Main(string[] args)
{
int val = 100;
Console.WriteLine("该变量的初始值为 {0}", val);
object obj = val;
Test(ref obj);
int num = (int)obj;
Console.WriteLine("该变量的初始值为 {0}", num);
}
static void Test(ref object getVal)
{
int temp = 10;
getVal = temp * 20;
}
结果就是:100 200 --------------------编程问答-------------------- namespace Example3
{
class DataypeTest
{
static void Main(string[] args)
{
int val = 100;
Console.WriteLine("该变量的初始值为 {0}",val);
Test(ref val);
Console.WriteLine("该变量的初始值为 {0}",val);
}
static void Test(ref int getVal)
{
int temp = 10;
getVal = temp * 20;
}
}
}
我只会这么改
谢谢大家~~~! --------------------编程问答-------------------- getVal = temp * 20; 又发生了一次装箱操作,getVal和obj的引用是两个不同的对象了 --------------------编程问答-------------------- 你都没有把修改的数值返回啊
同意3楼的改法
补充:.NET技术 , C#