我有一行来自其他人的代码:类似......
public static bool ScreenToMapPosition (Vector2 ScreenCoord, out Int2 MapPosition)
为了清楚起见,我是否理解正确?
当我调用该函数时,它返回:
返回bool,true / false
还返回MapPosition?
这是“出局”的意思吗?
所以实际上,我输入一个Int2 MapPosition,这样我可以给它一个新的值吗?
与
几乎相同public static Int2 ScreenToMapPosition (Vector2 ScreenCoord)
{
Int2 MapPosition = //blah blah code code;
return MapPosition;
}
答案 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关键字表示参数通过引用传入,这意味着可以在方法内部更改在方法外声明的变量,而不显式返回。