out关键字仅用于Value类型变量?不能用它来对象类对象等参考变量

时间:2018-03-21 10:14:05

标签: c# c#-4.0

int i =5;
classA _classAObj;
void print(out i)
{
    i=10;
    Console.Write(i);
}
void printMethod(out _classAObj)
{
    _classAObj = new ClassB();
    Console.Write(typeof(_classAObj ).ToString());
}

我需要更清楚地了解此

中的referenceType行为更改
printmethod()

1 个答案:

答案 0 :(得分:2)

为什么您认为它只能用于值类型? documentation没有提到它,而且编译得很好:

public void Foo(out string test)
{
    test = "";
}

outref相似,但out需要在方法中初始化变量,而ref要求在将其传递给方法之前对其进行初始化。两者都可以作为参考类型。

J.Skeet的这篇文章值得一读,并解释一下:Parameter passing in C#