将一种方法中的var用于另一种方法

问题描述 投票:-1回答:2

对于学校我需要创建一个程序,洗牌和划分一副牌。

我想从一个方法(void)中获取一个变量来返回。但是因为它在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会给出一个他没有回复的错误。我真的不知道该怎么做了

c# list methods void
2个回答
1
投票

您已经定义了Shuffle方法,如下所示:

public static Shuffle(List<string> deck)

在C#中,方法需要具有在方法名称之前的返回类型。将声明更改为:

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.