当前位置:编程学习 > C#/ASP.NET >>

帮我看看 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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,