已有56人关注
大家来看个费解的c#面试题,请教小科老师
发表在C#图书答疑 2009-05-14
是否精华
版块置顶:
下面的代码输出什么结果?结果为什么是这样?

using System.Collections.Generic; 
using System.Text;
using System;

namespace ConsoleApplication1
{
    class Value
    {
        public int i = 15;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Program t = new Program();
            t.first();
        }
        public void first()
        {
            int i = 5;
            Value v = new Value();
            v.i = 25;
            second(v, i);
            Console.WriteLine(v.i);//20 ?????看不懂 郁闷的问题
        }
        public void second(Value v, int i)
        {
            i = 0;
            v.i = 20; //这个改变的是什么v的值,那个地址呢
            Value val = new Value();
            v = val; //对象赋的是地址吧?是不能覆盖v.i=20赋值的过程?
            Console.WriteLine(v.i + " " + i + " ");//15,0 可以理解
        }
    }
}

整个过程是怎么理解,希望小科老师详细指导下,说仔细点,谢谢,本人领悟能力有点低。
分享到:
精彩评论 2
yaochen009
学分:0 LV1
2009-05-14
沙发
使用ref或不使用时的一些区别! 
Main() 

    Program t = new Program(); 
    //下面演示方法参数为 类实例类型 的传递规则 
    t.first();─────┐ 

    first() 
    { 
        Value v = new Value();  //此时 v.i = 15 
        v.i = 25;  //此时 v.i = 25 
        second(v)  //执行该方法 

        second(Value v) 
        { 
            //参数Value v刚进入second方法时 v.i = 25 
            v.i = 20;  //此时 v.i = 20 
            Value val = new Value();  //此时 val.i = 15 
            v = val;  //此时 v.i = 15 
        } 
        //此时 v.i = 20   (???为什么呢)
        second(ref v)  //执行该方法 

        second(ref Value v) 
        { 
            //参数ref Value v刚进入second方法时 v.i = 20 
            v.i = 20;  //此时 v.i = 20 
            Value val = new Value();  //此时 val.i = 15 
            v = val;  //此时 v.i = 15 
        } 
        //此时 v.i = 15  (???这又是为什么呢)
    } 
小科_mrkj
学分:43 LV2
2009-05-15
板凳
读者朋友:
    您好,我们主要解决我们的图书中出现的问题,对于这段代码,你可以将它复制到VS开发环境中,然后从第一步就插入断点,然后运行,具体看一下它的每一步到底是怎么走的。
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照