为什么我没有得到ref关键字的错误

时间:2017-01-23 13:09:55

标签: c# asp.net ref out

根据定义,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参数必须在传递之前初始化。

它构建&没有错误地运行。

3 个答案:

答案 0 :(得分:7)

data_file_directories保证在方法完成执行时初始化TestOut变量

请参阅out关键字

  

虽然作为out参数传递的变量不一定是   在传递之前初始化,需要调用方法   在方法返回之前指定一个值

ref

  

必须初始化传递给ref参数的参数   在它通过之前。这不同于out参数,其参数   在传递之前不必显式初始化。对于   更多信息,请参阅。

重新排序方法调用,您将看到您期望的行为。

答案 1 :(得分:1)

首先调用TestOut方法可以保证name变量的初始化。 重新排序方法调用,您将看到您期望的行为。

答案 2 :(得分:0)

评论出这条线 TestOut(out name); // fineTestOut(out name); //很好 您将收到以下行的错误 字符串名称; TestRef(引用名称)//为什么不抛出错误。