永发信息网

这段c#代码如何解释?输出什么?

答案:3  悬赏:80  手机版
解决时间 2021-04-20 17:10

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

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);
}
public void second(Value v, int i)
{
i = 0;
v.i = 20;
Value val = new Value();
v = val;
Console.WriteLine(v.i+" "+i+" ");
}
}
}

最佳答案
//程序会很快执行,以致于看不到结果。可以在t.first()后面加上这句,程序等待用户输入。这样就可以看到结果了。
Console.Read();
全部回答
15,0 20 public void second(Value v, int i) { i = 0; //此处是更改了参数形参的值 v.i = 20; Value val = new Value(); //这个位置创建了一个新对象 v = val; //此时虽然把val赋值给了v 但是v只是一个传递进来的参数对象的一个地址的复制,如果之后再去改变v对象中的属性值 其实也是改变val对象的对应属性 而这个改变根本不会影响到到v参数对象的实参的值,因为他们在堆中是2个不同的对象 Console.WriteLine(v.i+" "+i+" "); //所以该位置v.i应该是15,也就是value对象中i 的默认值 ,而i的值为0; } } } public void first() { int i = 5; Value v = new Value(); v.i = 25; second(v, i); //调用该方法的过程改变了对象v 的字段i的值为20, Console.WriteLine(v.i); //所以这个位置输出的是20, } 总结如下: 对于值类型参数 传递的是实参的拷贝,而对于引用类型变量 传递的是对象在堆上的地址的拷贝,希望这样说你可以明白

定义一个程序访问系统文件夹

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么是幸福?怎样才会快乐?
请告诉我怎么才能忘记我爱的人???
在淘宝上开店,要做照片处理,用什么软件
很痛恨一个人,该怎么办的啊?!跟他沟通上,
武艺高猜三个数字
文东小区在哪里啊,我有事要去这个地方
福建平潭有什么好玩的地方
我25岁的弟弟
当悲伤逆流成河时,我们该怎么办?
我刚买的东芝L526,是不是有毛病啊?大家帮忙
第09305期的排列3的中奖号是多少、
哉这个字读音读什么
qq牧场可以邀请吗?如果可以那位可以邀请我哦
ps3真三国无双6的问题:我把游戏拷贝到机器的
机电液分别指什么
推荐资讯
鸿汇达汽贸这个地址在什么地方,我要处理点事
knbp[;v
中国邮政(新区邮政支局)这个地址在什么地方,
美丽银行化妆品折扣店怎么去啊,有知道地址的
会声会影怎么输出?
为什么会开心不起来?
有最方便快捷的解酒方法吗?急用谢谢!
用多么多么多么描写老师严厉的一句话
怎么用财付通网上购物
请用自己的语言回答.百科没看懂.
数学问题,高手来来来!!
帮我看看俩套装机性能怎样呢?该选哪套
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?