深度思考ref和out及其使用情景

本文详细探讨了C#中ref和out参数的使用误区、常规用法,并从IL角度解析它们如何改变实参的值。通过实例代码和IL代码分析,阐述了ref与out的区别以及何时使用它们。
摘要由CSDN通过智能技术生成

原文链接:http://blog.csdn.net/a237653639/article/details/50676556
首先我们概括一下其基本概念:1.ref和out都是对参数的修饰,只用于函数参数。2.想要改变实参的值时使用他们,且必使用他们,不论哪种类型变量。3.out强制被调用的函数赋值给所修饰的变量,ref没有限制。

下面从几个方面来讲解:

1.使用误区
2.常规的使用及从IL的角度瞧瞧

一、使用误区

请刚未接触过ref,out的童鞋先跳过这里看“常规的使用及从IL的角度瞧瞧”这一栏(这栏写在前面是为了方便自己查阅)。

我们不废话,直接上代码。目的是:测试是否能通过函数来改变实参指向的对象(不使用ref,out),请试着运行一下这些代码再看看和你的预测是否一致。

using System;

   namespace ConsoleApplication1 {
    class Program {
        static void Main( string[] args ) {
            //*******************测试是否能通过函数来改变实参指向的对象(不使用ref,out)******//
            //Test Ref
            Person person1 = null;
            CreatePerson( person1 );

            //检测person1在调用CreatePerson后是否成功指向了"new Person()",输出为True还是False?
            Console.WriteLine( person1 == null );

            Console.ReadKey();

            //Test SetNull
            Person person2 = new Person();
            SetNull( person2 );

            //检测person2在调用SetNull后是否成功指向了null,输出为True还是False?
            Console.WriteLine( person2 == null );

            Console.ReadKey();
        }

        static void CreatePerson(Person person ) {
            person = new Person();
        }

        static void SetNull( Person person ) {
            person = null;
        }
    }

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值