C#'语法,“out”变量作为参数的含义是什么?

时间:2014-01-21 13:31:52

标签: c# syntax

我有一行来自其他人的代码:类似......

public static bool ScreenToMapPosition (Vector2 ScreenCoord, out Int2 MapPosition)

为了清楚起见,我是否理解正确?

当我调用该函数时,它返回:

  1. 返回bool,true / false

  2. 还返回MapPosition?

  3. 这是“出局”的意思吗?

    所以实际上,我输入一个Int2 MapPosition,这样我可以给它一个新的值吗?

    几乎相同
    public static Int2 ScreenToMapPosition (Vector2 ScreenCoord)
    {
        Int2 MapPosition = //blah blah code code;
        return MapPosition;
    }
    

5 个答案:

答案 0 :(得分:1)

  

所以实际上,我输入一个Int2 MapPosition,这样我可以给它一个新的值吗?

我将其改为:

  

所以实际上,我输入了一个Int2 MapPosition,肯定会是一个新值吗?

将创建Int2类的新实例,并将为MapPosition参数传入的变量将设置为此实例。

out只是说上一个变量值不是预期的,甚至会被丢弃,并且会创建一个新变量值。

这与 ref 不同,您需要传入初始化对象。

答案 1 :(得分:1)

这意味着它在方法中设置的值将是您在调用它时发送的变量的值。例如:

Int2 mapPos;
ScreenToMapPosition(screenCord, out mapPos);

此处mapPos将在方法 ScreenToMapPosition中设置为的值。

答案 2 :(得分:0)

关于MSDN的这篇文章解释了out参数是从方法返回值的另一种方法。

此MSDN示例清楚说明:

static void Method(out int i)
{
    i = 44;
}

static void Main()
{
    int value;
    Method(out value);
    // value is now 44
}

答案 3 :(得分:0)

'out'允许您通过引用传递变量并修改方法中的变量。它通常用于将多个对象传入和传出方法,而不必将它们全部包装在一个容器对象中。

答案 4 :(得分:-3)

你的方法是正确的,因为该方法返回一个布尔值(true / false)。

参数上的out关键字表示参数通过引用传入,这意味着可以在方法内部更改在方法外声明的变量,而不显式返回。