2013-03-21 50 views
2

我想将这个C#方法转换成PHP。第二个参数的含义是什么?C#出关键字的含义,它有相当于PHP?

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

首先要有的外参数的精确PHP版本,我不知道你为什么会使用一个外部参数。所有out和ref参数都可以用简单的返回来替换。这提供了对输出的更多控制。 – GroundZero 2013-03-21 23:19:54

+0

@GroundZero ...它已经返回另一种类型。 – 2013-03-21 23:20:36

+0

@ J.Steen然后使用一个对象返回...如果你有一个方法应该返回第一个和最后一个名字,使用包含这两个字符串的Name对象。这使用out和return来解决丑陋的代码。首先,应避免使用out/ref,并且应该避免使用out/ref并返回 – GroundZero 2013-03-21 23:31:42

回答

4

Documentationref

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

使用out时黯然不能直接翻译成PHP请考虑在C#中,你必须在调用方法中设置的值。

+1

@MadaraUchiha:他问如何将其转换为PHP ...这是相当自我解释我相信。 – dynamic 2013-03-21 23:13:15

+1

@llnk:如果这是自我解释,他不会提问,你不会将'ref'与'out' ;-) – 2013-03-21 23:14:40

+0

这不是自我解释。问题*主要是询问'out'关键字是什么意思。转换是次要的。 *也*,作为一个不知道C#的人,我不知道'out'参数的意思,所以你的问题对我来说没有什么价值。 – 2013-03-21 23:14:52

5

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

我不认为PHP具有所需的分配行为的等价物,但如果您要转换方法主体并在内部维护该行为,则应该能够将其转换为常规传入引用参数并维护相同的功能。

1

一个Googeling的点点把我带到这个网站: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#