C#初学问题
答案:1 悬赏:0 手机版
解决时间 2021-11-23 16:42
- 提问者网友:謫仙
- 2021-11-23 10:24
C#初学问题
最佳答案
- 五星知识达人网友:煞尾
- 2021-11-23 11:32
Main是入口函数,也就是说从Main开始执行的。
这里涉及到一个问题就是作用域的问题。
在main中,定义了a1引用型变量,而在a2中定义的是值型变量。
在Main中先执行的是MyMethod方法,最先显示的是MyMethod方法中的Console.Write语句。在这个语句中,传入的实参,其实是传入的副本——一定要记清楚的是这里传入的副本,所以先在MyMehtod中显示的是两个值分别为f1.Val为25,f2的值是15。
这个语句执行完毕后,执行的Main孙子函数中的Console.Write,根据作用域,我们传入的是副本,换句话来说,函数并没有改变其原来参数的值。a1原本是多少,现在原是多少,并不受MyMethod方法的影响,所以显示是,依旧显示的是原本的值,即,F1.Val是20,而f2的值是10。这个主要考查的还是作用域的问题,传值引用传入的只是副本,并不是地址,所以并不能改为原来的值。除非是传址引用,在.net中的传址引用是ref/out,有这两个说明时,则表示传入形参是地址,不是副本,会改变原来的值。追问第二个f1的值是25,不是20,为什么呢?
这里涉及到一个问题就是作用域的问题。
在main中,定义了a1引用型变量,而在a2中定义的是值型变量。
在Main中先执行的是MyMethod方法,最先显示的是MyMethod方法中的Console.Write语句。在这个语句中,传入的实参,其实是传入的副本——一定要记清楚的是这里传入的副本,所以先在MyMehtod中显示的是两个值分别为f1.Val为25,f2的值是15。
这个语句执行完毕后,执行的Main孙子函数中的Console.Write,根据作用域,我们传入的是副本,换句话来说,函数并没有改变其原来参数的值。a1原本是多少,现在原是多少,并不受MyMethod方法的影响,所以显示是,依旧显示的是原本的值,即,F1.Val是20,而f2的值是10。这个主要考查的还是作用域的问题,传值引用传入的只是副本,并不是地址,所以并不能改为原来的值。除非是传址引用,在.net中的传址引用是ref/out,有这两个说明时,则表示传入形参是地址,不是副本,会改变原来的值。追问第二个f1的值是25,不是20,为什么呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯