4

out一部の開発者が void 関数のパラメーター リストでキーワードを使用しているのを見てきました。以下のコードの長所と短所についてはよくわかりません。

List<string> listOfResult;    

public void public void (out listOfResult)
{
    //bla bla
}

public List<string> c(out listOfResult)
{
    List<string>  list= new List<string>();
    //bla bla

    return list;
}

これら 2 つのコード スニペットは完全に有効ですか、outそれともキーワードに問題はありますか?

4

4 に答える 4

3

outキーワードは、関数から複数の値を返す必要がある場合に便利です。良い例はTryXXX、例外をスローする代わりに操作のステータスを返すメソッドです。

public bool TryParse(string str, out int value);

しかし、void メソッドで単一のパラメーターを使用する理由はわかりませんout...メソッドからその値を返すだけです。はるかに使いやすくなります。比較:

List<string> list;
GetList(out list); // confusing method name

List<string> list = GetList(); // nice name, one line of code

リストの取得で例外がスローされる可能性がある場合は、次のようなメソッドを作成できます。

List<string> list;
if (TryGetList(out list)) // better than exception handling
{
   // list was filled successfully
}
于 2012-07-16T00:24:40.837 に答える
1

out パラメーターは、関数から複数の値を返す必要がある場合に非常に便利です。

たとえば、Return は結果のリストですが、返されるリストが null の場合、out パラメータを使用してエラー メッセージを返すことができます。

于 2012-07-16T00:22:28.137 に答える
1

複数のパラメータを返すのは便利な構文です。個人的には、ほとんどの場合、メソッドの戻りを「新しいオブジェクト/クラス」としてモデル化する方が良いと思います。

それは次のようになります。

class CResult
{
    List<string> firstResult;
    List<string> secondResult;
}

public CResult c()
{
    // do something
    return new CResult() {firstResult = ..., secondResult = ... };
}

このアプローチに関連するその他のことについては、こちらを参照してください

于 2012-07-16T00:42:26.093 に答える
0

//out キーワードは return の代わりに関数で使用されます。out キーワード public void outKeyword(out string Firstname, out string SecondName) { Firstname = "Muhammad"; を使用して、複数のパラメーターを使用できます。SecondName = "イスマイル";

    }

//ボタン クリック時 Event protected void btnOutKeyword_Click(object sender, EventArgs e) { string first, second; outKeyword(最初に、2 番目に); lblOutKeyword.Text = 最初 + " " + 2 番目; }

于 2014-08-28T08:07:28.557 に答える