in: 值传递,默认传递方式: ref:地址/引用传递,调用时该参数必需已经初始化: out:地址/引用传递,调用时该参数不需要先初始化(被调用方负责该参数的初始化). 注1: in 关键字用于向函数传递值: out 关键字用于从函数接收值,通常用于接收多个返回值(返回值只有一个时,直接用函数返回值就行): ref 关键字用于通过函数操作变量, 也可以用于向函数传递值或从函数接收值: 注2:ref 与 out 相同之处在于:传递的都是地址/引用. ref 与 out 不同之处…
我们可能见到下面的代码 public static void StringBuilderNoRef(StringBuilder s) { s.Append(" World"); s = new StringBuilder("hi"); } public static void StringBuilderRef(ref StringBuilder s) { s.Append(" World"); s = new StringBuil…
out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化.若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字.例如: class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } } 尽管作为 out 参数…
在C#中,ref的意思是按引用传递.可以参考C++: int a = 10, b = 20; void swap(int x, int y) { int temp = x; x = y; y = temp; } 如果简单的调用这个swap,比如:swap(a, b),那么你根本没办法交换这两个变量的值,因为x和y都是形参,在swap返回的时候,x和y都被释放了.但如果是这样定义swap: void swap (int& x, int& y) { int temp = x; x = y; y…