2013-03-21 59 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#