使用 var 从一种方法到另一种方法

Use a var from one method into a different one

为了学校,我需要创建一个洗牌和分牌的程序。

我想从一个方法(void)中获取一个变量returned。但因为它在 Void 中,所以它不能。但是,如果我在 Void 之外创建它,则会出现错误。因为它是一个变量。我从那个 var 做了一个列表。 我对 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会报错说他没有return。我真的不知道该怎么办了

您已经像这样定义了您的 Shuffle 方法:

public static Shuffle(List<string> deck)

在 C# 中,方法需要在方法名称之前有一个 return 类型。将声明更改为:

public static List<string> Shuffle(List<string> deck)

此外,您可能想要创建一个简单的 class 来表示 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() 返回卡片列表(或数组)。