5

我正在尝试将此 C# 方法转换为 PHP。第二个参数中的out是什么意思?

public static bool Foo(string name, out string key)
4

3 回答 3

5

out关键字指定参数必须由被调用的方法赋值,赋值的值会传回调用方法。查看MSDN了解更多信息。

我不认为 PHP 具有所需的赋值行为的等价物,但如果您正在转换方法主体并在内部维护该行为,您应该能够将其转换为常规的通过引用参数传递并保持相同的功能。

于 2013-03-21T23:10:17.127 回答
5

文档参考

public static function foo($str, &$key)
                                 ^
                                 | Pass by reference

请考虑在 C# 中,您必须在使用时在调用方法中设置一个值,out遗憾是您不能直接将其转换为 PHP。

于 2013-03-21T23:10:36.367 回答
1

一点点谷歌搜索把我带到了这个网站:http ://www.php.net/manual/en/language.references.pass.php

如您所知,参数是变量的副本。这意味着您实际上不会更改变量本身。
例如:

<?php
    function foo($bar) {
        $bar++;
    }

    $bar = 5;  // $bar = 5
    foo($bar); // $bar = 6

    echo $bar; // $bar = 5
?>

而这段代码实际上会改变给定的变量,就像使用引用一样。

<?php
    function foo(&$bar) {
        $bar++;
    }

    $bar = 5;  // $bar = 5
    foo($bar); // $bar = 6

    echo $bar; // $bar = 6 now
?>

注意:这不是 C# 中 out-parameter 的精确 PHP 版本

于 2013-03-21T23:30:04.770 回答