【问题标题】:Create different named variables and assign classes to that variable in C#在 C# 中创建不同的命名变量并将类分配给该变量
【发布时间】:2022-02-20 16:58:49
【问题描述】:

我想在一个循环中创建所有 52 张扑克牌。

像这样:

Card heart1 = new Card(1, "hearts", "hearts 1");
Card heart2 = new Card(2, "hearts", "hearts 2");

这是我所拥有的,但我被困住了:

string[] icon = new string[]{ "hearts", "clubs", "diamonds", "spades" };
Card[] card = new Card[13];
foreach (string i in icon)
{
     for (int j = 1; j <= 13; j++)
     {

     }
}
    

我正在尝试为每种类型的卡片创建所有 13 张卡片。我希望 de 变量与旁边带有数字的字符串具有相同的名称。

我是 C# 新手,所以如果我做错了,或者是否有更好的方法,请告诉我。 我知道我可以手动完成,但我希望它自动完成。

【问题讨论】:

  • "我希望 de 变量与旁边带有数字的字符串具有相同的名称。" - 不,你不想要那个,你不能拥有那个。而是使用您已经设置的数组并将卡片放入其中,如果您需要红心七,请查看数组中的索引 6。
  • 您是否考虑过开设Deck 课程?创建一个新的Deck 对象将创建唯一的52 个Card 对象。此外,Deck 对象可以有一些方法,例如…ShuffleDealOneCard。尚不清楚Card 类是什么样子,但似乎每个Card 都有一个ID 值,这似乎是多余的,因为每个Cards“Suit”和“Rank”属性都可以唯一地标识卡片。换句话说,Deck 中没有两张牌具有相同的“花色”和“等级”值。
  • 这里有很多很好的帖子来说明如何创建汽车、甲板和洗牌。
  • @JohnG 是的,我已经有一个名为 Deck 的类,它有一个方法可以用 de 类 Card 在列表中添加 de 卡片。在 Card 类中,有一个方法可以将卡片添加到我创建的卡片组中。我只想知道如何在不手工的情况下创建所有 52 张卡片。如果我知道我可以自己处理剩下的事情。第一个变量表示卡片上有多少花色,2dn 是花色类型,第三个是两者的组合。
  • 许多与纸牌相关的帖子。我之前通过stackoverflow.com/questions/57846758/… 提供了类似的可读性和生成随机卡片以供考虑。

标签: c# loops class


【解决方案1】:

C# 不支持动态命名的变量。您可以声明一个卡片数组并在循环中初始化元素,如下所示:

Card[] deck = new Card[52];
string[] suits = {"hearts", "clubs", "diamonds", "spades"};
for(int i=0; i < suits.Length; i++)
{
    for (int j = 1; j <= deck.Length/suits.Length; j++)
    {
        deck[i*j] = new Card(j, suits[i], $"{i} of {suits[i]}");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多