Out 和 Ref 参数
值类型(结构和枚举)通过值传递给函数:将为函数提供副本,而不是对变量的引用。所以以下功能不会做任何事情。
void add_three (int x) {
x += 3;
}
int a = 39;
add_three (a);
assert (a == 39); // a is still 39
要更改此行为,你可以使用 ref
关键字。
// Add it to the function declaration
void add_three (ref int x) {
x += 3;
}
int a = 39;
add_three (ref a); // And when you call it
assert (a == 42); // It works!
out
以相同的方式工作,但你必须在函数结束之前为此变量设置一个值。
string content;
FileUtils.get_contents ("file.txt", out content);
// OK even if content was not initialized, because
// we are sure that it got a value in the function above.
print (content);