Используйте переменную из одного метода в другой - PullRequest
0 голосов
/ 09 марта 2019

Для школы мне нужно создать программу, которая перемешивает и делит колоду карт.

Я хочу получить переменную из одного метода (void) для возврата. Но потому что он внутри Пустоты, он не может. Но если я создаю это вне Пустоты, это дает ошибку. Потому что это вар. Я сделал список из этого вар. Я немного новичок в C #. Помощь будет очень признателен.

public static class Kaart
{
    public static void Kaarten() {
        string s = "";
        string v = "";
        string k = "";
        string kaart = "";

        var deck = new List<string>();

        for (int x = 0; x < 4; x++)
        {
            switch (x)
            {
                case 0: s = "Harten"; break;
                case 1: s = "Klaver"; break;
                case 2: s = "Schoppen"; break;
                case 3: s = "Ruiten"; break;
            }

            for (int y = 0; y < 13; y++)
            {
                switch (y)
                {
                    case 0: v = "A"; break;
                    case 1: v = "2"; break;
                    case 2: v = "3"; break;
                    case 3: v = "4"; break;
                    case 4: v = "5"; break;
                    case 5: v = "6"; break;
                    case 6: v = "7"; break;
                    case 7: v = "8"; break;
                    case 8: v = "9"; break;
                    case 9: v = "10"; break;
                    case 10: v = "Boer"; break;
                    case 11: v = "Koningin"; break;
                    case 12: v = "Koning"; break;
                }
                kaart = k + " " + s + " " + v;
                deck.Add(kaart);
            }
            Shuffle(deck);
        }
    }

    public static Shuffle(List<string> deck)
    {
        Random rng = new Random();
        //Shuffled het deck;
        var shuffledDeck = deck.OrderBy(a => rng.Next()).ToList();
        return shuffledDeck;

    }
}

С этим кодом Shuffle выдаст ошибку, что у него нет возврата. Я действительно не знаю, что делать дальше

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Вы определили свой метод Shuffle следующим образом:

public static Shuffle(List<string> deck)

В C # методы должны иметь возвращаемый тип, который идет перед именем метода.Измените объявление на это:

public static List<string> Shuffle(List<string> deck)
0 голосов
/ 09 марта 2019

Кроме того, вы можете создать простой класс, представляющий Card:

public class Card
{
    public Card(int color, int val)
    {
        Color = color;
        Value = val;
    }
    public int Color { get; }
    public int Value { get; }

    // That might look nicer in the debugger (with less code).
    public override string ToString()
    {
        return "♥♣♦♠"[Color] + "A23456789TNQK"[Value];
    }
}

И я не уверен, что если вы также (немного) изучаете объектную ориентацию, вы можете реализовать статический метод Card.GetDeck(), возвращающий список (или массив) карточек.

...