原文链接: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;
}
}