1.1 KiB
1.1 KiB
ref 和 out
通常用法:
- 解决“函数内部改了值,函数外部也要同步变化”的需求
- 让方法可以直接操作调用方变量
区别:
ref- 传入前必须先初始化
- 方法内可以读,也可以写
out- 传入前可以不初始化
- 方法返回前必须赋值
- 常用于“额外带回一个结果”
语法: 定义和调用两边都要写关键字。
ref:
void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
int x = 10;
int y = 20;
Swap(ref x, ref y);
Console.WriteLine($"{x}, {y}"); // 20, 10
out:
bool TryGetAge(string text, out int age)
{
return int.TryParse(text, out age);
}
if (TryGetAge("18", out int value))
{
Console.WriteLine(value);
}
注意:
- ==
ref参数必须先初始化== - ==
out参数在方法结束前必须赋值== ref/out传的是变量本身,所以修改会影响外部- 对引用类型来说:
- 不加
ref时,方法里可以改对象内容 - 加
ref时,连“变量指向哪个对象”都可以改
- 不加
- 属性、常量、表达式一般不能直接当
ref/out参数传入
#基础