0

私は次のコードを書きました:

public List<Card> DealCards(int numCardsToDeal) {
            return shuffle.RemoveRange(0,numCardsToDeal-1);

        }

private List<Card> shuffle = new List<Card>() // class property deceleration. 

ただし、次のエラーが発生します。

タイプ「void」を「System.Collections.Generic.List」に暗黙的に変換することはできません

理由がわかりません。戻るだけで動作しshuffleます。なぜそれで問題が解決するのですか?

4

2 に答える 2

3

RemoveRangeはリストを変更し、何も返しません-したがって、void。これは、新しいリストを返す多くのリストメソッドとは異なります。

カードを取り外してリストを返す次のコードは機能するはずです。

public List<Card> DealCards(int numCardsToDeal)
{
    shuffle.RemoveRange(0,numCardsToDeal-1);
    return shuffle;
}

実際にグローバルである場合shuffleは、何も返す必要はありません。

于 2012-05-05T12:53:26.037 に答える
1

RemoveRangeメソッドは値を返しません—その戻りタイプはvoidです。それはすべて、リストから指定された範囲の要素を削除します。変更されたリスト、または削除されたオブジェクトを含むリストは返されません。

したがって、メソッドの結果を返そうとすると、エラーが発生します。これは、を返すことになっている関数からRemoveRange戻ることができないためです。voidList<Card>

コードを2行に分割する必要があります。

public List<Card> DealCards(int numCardsToDeal)
{
    // First, remove the range of cards from the deck.
    shuffle.RemoveRange(0,numCardsToDeal-1);

    // Then, return the modified list.
    return shuffle;
}
于 2012-05-05T12:53:36.463 に答える