c#中关键字的含义,它在PHP中是否有等价的

本文关键字:是否 PHP 关键字 它在 | 更新日期: 2023-09-27 18:05:26

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

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

c#中关键字的含义,它在PHP中是否有等价的

文档ref

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

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

out关键字指定参数必须由被调用的方法分配,分配的值将被传递回调用方法。查看MSDN获取更多信息。

我不认为PHP有一个等效的必要的赋值行为,但如果你正在转换方法体,并在内部维护该行为,你应该能够将其转换为常规的通过引用参数传递,并保持相同的功能。

我在google上搜索了一下,找到了这个网站: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参数的php版本