自学去

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 303|回复: 0

ref 与 out 的差异

[复制链接]

该用户从未签到

343

主题

343

帖子

36万

积分

超级版主

Rank: 8Rank: 8

积分
366572
发表于 2016-6-15 11:06:14 | 显示全部楼层 |阅读模式
执行结果:

测试程式码:
1        protected void Page_Load(object sender, EventArgs e)
2        {
3            int refIntValue = 100;
4            refTest(ref refIntValue);
5            Response.Write("this is ref : " + refIntValue);
6         
7            Response.Write("<br/>");
8         
9            int outIntValue;
10            outTest(out outIntValue);
11            Response.Write("this is out : " + outIntValue);
12         
13            Response.Write("<br/>");
14         
15            int autoIntValue = 66;
16            autoTest(autoIntValue);
17            Response.Write("this is auto : " + autoIntValue);
18        }
19        private void refTest(ref int value)
20        {
21            value = value / 2;
22        }
23        private void outTest(out int value)
24        {
25            value = 70;
26            value = value / 2;
27        }
28        private void autoTest(int value)
29        {
30            value = value / 2;
31        }



ref 和 out都是「传址」(指向),差别在于

ref的变数必须要先给它值(初始值)

out可以在无值的状态下去运算,运算后的结果会再「指向」变数(outIntValue)
如果在Page_Load里给outIntValue值,outTest()无设定值的状况下,会出现「CS0269: 使用的 out 参数 'value' 尚未指派值」的错误信息!!

ps.使用out必须在outTest() 给运算值,如果在Page_Load设定int outIntValue = 88; 和在outTest()里设定value = 70; 则系统会拿outTest()里的值去运算


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
灌水请到灌水区!请不要恶意灌水!否则封!
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

广告服务|关于我们|手机版|小黑屋|手机客户端|自学去 ( 蜀ICP备12031052号-3 )

GMT+8, 2017-1-17 03:14 , Processed in 0.208390 second(s), 40 queries .

快速回复 返回顶部 返回列表