什么是c#中的参数以及我们使用它的原因

时间:2010-08-27 06:31:12

标签: c#

为什么我们使用输出参数,例如

void f() {
    int first, next;
    read(out first, out next);
}

void read (out int first, out intnext) {
    first = console.read();
    next = console.read();
}

而不是编写所有这些代码,为什么我们不使用:

void f() {
    int first, next;
    first = console.read();
    next = console.read();
}

3 个答案:

答案 0 :(得分:4)

out参数非常类似于具有额外的返回值。

在具有void返回类型的方法中拥有out参数并不是一个好主意,就像您给出的示例一样......但有时您希望能够一次返回多个值。即使在您的示例中,您可能想要在单个方法调用中封装“我正在从控制台读取两次”的想法。在这种情况下,这有点不太可能,因为操作很容易分离 - 但在其他情况下,执行一些工作会自然地提供两位信息,并且您不希望重复工作以获得两个位。当然,你可以将它们封装在一个新的结构或类中,但有时这只是一种痛苦。

对于.NET 4,请注意返回Tuple<...>通常更好。因此,int.TryParse的签名为

bool TryParse(string text, out int value)

可能会更好

Tuple<bool, int> TryParse(string text)

答案 1 :(得分:1)

out参数有效地允许方法具有多个返回值。引用类型不需要修饰符,但对于值类型,对方法体中的参数变量所做的更改通常不会回流到调用代码。

答案 2 :(得分:1)

out (C# Reference)

out

当您希望方法返回多个值时,声明out方法很有用。使用out参数的方法仍然可以返回值。一个方法可以有多个out参数。

out关键字导致参数通过引用传递。这类似于ref关键字,除了ref要求在传递之前初始化变量。要使用out参数,方法定义和调用方法都必须显式使用out关键字。

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