一. ref和out相同点
它们都是传址的,执行方法后,原来的值都改变了
二. ref和out不同点
- 使用ref时,传入的参数必须初始化;而使用out时不用初始化。
- ref能把参数的值传进方法;而out要把参数清空(即使参数已经赋值也要清空),退出方法时,所有out参数都必须赋值。
三. 示例代码
using System;
class RefOutTest
{
static void refTest(ref int a, ref int b)
{
a = 10;
b = a;
}
static void outTest(out int a, out int b)
{
//离开这个方法前,必须对 a 和 b 赋值,否则会报错。
a = 10;
b = 20;
}
static void Main()
{
int a = 1, b = 2;
refTest(out a, out b);
Console.WriteLine("a = {0}, b = {1}", a, b);
int x,y;
outTest(out x, out y);
Console.WriteLine("x = {0}, y = {1}", x, y);
}
}