C# ref 和out
ref关键字
概念:
ref是 C# 中的一个关键字,用于按引用传递参数。当在方法调用中使用ref关键字时,它允许方法修改传递给它的实际变量的值,而不仅仅是副本。
使用方法:
首先,在方法定义和方法调用中都需要使用ref关键字。例如:
class Program { static void ModifyValue(ref int num) { num = 10; } static void Main() { int myNum = 5; ModifyValue(ref myNum); Console.WriteLine(myNum); } }
在这个例子中,ModifyValue方法接收一个ref参数num。在Main方法中,当调用ModifyValue时,变量myNum通过ref关键字传递。这样,在ModifyValue方法中对num的修改会直接影响myNum的值。
注意事项:
在传递ref参数之前,变量必须先初始化。因为方法会直接操作这个已经存在的变量。
out关键字
概念:
out关键字也用于按引用传递参数。与ref不同的是,out参数主要用于从方法中返回多个值。它侧重于让方法将数据输出给调用者,并且在方法调用之前,不需要对作为out参数的变量进行初始化。
使用方法:
class Program { static void GetValues(out int num1, out int num2) { num1 = 1; num2 = 2; } static void Main() { int value1; int value2; GetValues(out value1, out value2); Console.WriteLine(value1 + " " + value2); } }
在这个例子中,GetValues方法有两个out参数num1和num2。在Main方法中,虽然value1和value2在调用GetValues之前没有初始化,但是在GetValues方法内部对num1和num2进行赋值后,这些值会传递回value1和value2。
注意事项:
方法内部必须对所有out参数进行赋值,否则会出现编译错误。这是因为out参数的主要目的是从方法中获取输出值。
转载请注明出处。