根据定义,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参数必须在传递之前初始化。
它构建&没有错误地运行。
答案 0 :(得分:7)
data_file_directories
保证在方法完成执行时初始化TestOut
变量
请参阅out关键字
虽然作为out参数传递的变量不一定是 在传递之前初始化,需要调用方法 在方法返回之前指定一个值
和ref
必须初始化传递给ref参数的参数 在它通过之前。这不同于out参数,其参数 在传递之前不必显式初始化。对于 更多信息,请参阅。
重新排序方法调用,您将看到您期望的行为。
答案 1 :(得分:1)
首先调用TestOut
方法可以保证name
变量的初始化。
重新排序方法调用,您将看到您期望的行为。
答案 2 :(得分:0)
评论出这条线 TestOut(out name); // fineTestOut(out name); //很好 您将收到以下行的错误 字符串名称; TestRef(引用名称)//为什么不抛出错误。