What is the meaning of the C#' syntax, “out” variable as a parameter?
本问题已经有最佳答案,请猛点这里访问。
我有一行别人写的代码,比如…
1 | public static bool ScreenToMapPosition (Vector2 ScreenCoord, out Int2 MapPosition) |
只是说清楚,我是否理解正确?
当我调用函数时,它返回:
返回bool,真/假
还返回映射位置?
这就是"out"的意思?
所以实际上,我输入了一个int2映射位置,这样我就可以给它一个新的值了?
几乎和
1 2 3 4 5 | public static Int2 ScreenToMapPosition (Vector2 ScreenCoord) { Int2 MapPosition = //blah blah code code; return MapPosition; } |
它意味着它在方法中设置的值,将是您调用它时发送的变量的值。例如:
1 2 | Int2 mapPos; ScreenToMapPosition(screenCord, out mapPos); |
这里,
So in effect, I enter a Int2 MapPosition just so I can have it given a new value?
我将把这个改成:
So in effect, I enter a Int2 MapPosition and it will for sure be a new value?
将创建一个新的
这与需要传入初始化对象的ref不同。
"out"允许您通过引用传递变量并在方法中修改变量。它通常用于将多个对象传入和传出一个方法,而不必将它们全部包装在一个容器对象中。
这篇关于msdn的文章解释了out参数是从方法返回值的另一种方法。
这个msdn样本清楚地表明:
1 2 3 4 5 6 7 8 9 10 11 | static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } |
方法返回布尔值(真/假)是正确的。
参数上的out关键字表示参数是通过引用传入的,这意味着在方法外部声明的变量可以在方法内部更改,而不必显式返回。