根据定义,ref
关键字必须在传递之前初始化.而out
参数必须在从函数返回之前初始化.
以下是我的片段.
public void TestRef(ref string n) { } public void TestOut(out string n) { n = "Hello"; //if I don't initialize, I gets compile time error. & That's right. }
现在在调用方法时.
string name; TestOut(out name);//fine TestRef(ref name) // why not throwing error.
在尝试调用TestRef()时的上述调用中,我没有初始化name参数.但根据我的理解,ref参数必须在传递之前初始化.
它构建和运行没有错误.
TestOut
保证name
在方法完成执行时初始化变量
见出关键字
尽管作为out参数传递的变量在传递之前不必初始化,但是在方法返回之前需要调用方法来赋值.
和参考
传递给ref参数的参数必须在传递之前初始化.这与out参数不同,out参数在传递之前不必显式初始化.有关更多信息,请参阅.
重新排序方法调用,您将看到您期望的行为.