Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如何在控制台窗口中打印下一张卡?_C# 4.0 - Fatal编程技术网

C# 4.0 如何在控制台窗口中打印下一张卡?

C# 4.0 如何在控制台窗口中打印下一张卡?,c#-4.0,C# 4.0,我在把卡片打印到控制台窗口时遇到了问题有什么想法吗?此外,欢迎对我的代码提出任何建议 namespace Drinking_Game_ { class Program { 这就是我有点麻烦的地方。我无法将我打电话打印的卡拿到控制台窗口 public static void Main() { Deck deck = new Deck(); Card card = new Card();

我在把卡片打印到控制台窗口时遇到了问题有什么想法吗?此外,欢迎对我的代码提出任何建议

namespace Drinking_Game_
{
    class Program
    {
这就是我有点麻烦的地方。我无法将我打电话打印的卡拿到控制台窗口

       public static void Main()
       {
           Deck deck = new Deck();
           Card card = new Card();
           deck.Shuffle();
           var value = deck.TakeCard();
           Console.WriteLine(value);
           Console.ReadLine();
       }
}




public enum Suit
{
    Spades = 0,
    Hearts = 1,
    Diamonds = 2,
    Clubs = 3,
}

public enum CardNumber
{
    Ace = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8,
    Nine = 9,
    Ten = 10,
    Jack = 11,
    Queen = 12,
    King = 13,
}

public class Card
{
    public Suit Suit { get; set; }
    public CardNumber CardNumber { get; set; }
}

public class Deck
{
    public Deck()
    {
        Reset();
    }

    public List<Card> Cards { get; set; }

    public void Reset()
    {
        Cards = Enumerable.Range(1, 4)
            .SelectMany(s => Enumerable.Range(1, 13)
                                .Select(c => new Card()
                                {
                                    Suit = (Suit)s,
                                    CardNumber = (CardNumber)c
                                }
                                        )
                        ).ToList();
    }

    public void Shuffle()
    {
        Cards = Cards.OrderBy(c => Guid.NewGuid()).ToList();
    }

    public Card TakeCard()
    {
        var card = Cards.FirstOrDefault();
        Cards.Remove(card);

        return card;
    }

    public IEnumerable<Card> TakeCards(int numberOfCards)
    {
        var cards = Cards.Take(numberOfCards);

        var takeCards = cards as Card[] ?? cards.ToArray();
        Cards.RemoveAll(takeCards.Contains);

        return takeCards;
    }
  }
}
publicstaticvoidmain()
{
甲板=新甲板();
卡片=新卡片();
洗牌();
var值=deck.TakeCard();
控制台写入线(值);
Console.ReadLine();
}
}
公开枚举诉讼
{
黑桃=0,
红心=1,
钻石=2,
梅花=3,
}
公共枚举卡号
{
Ace=1,
二等于二,
三等于三,
四等于四,
五等于五,
六等于六,
七等于七,
八等于八,
九等于九,
十等于十,
杰克=11,
女王=12,
国王=13,
}
公务舱卡
{
公益诉讼{get;set;}
公共卡号卡号{get;set;}
}
公务舱甲板
{
公共甲板()
{
重置();
}
公共列表卡{get;set;}
公共无效重置()
{
卡片=可枚举范围(1,4)
.SelectMany(s=>Enumerable.Range(1,13)
.选择(c=>新卡()
{
Suit=(Suit)s,
CardNumber=(CardNumber)c
}
)
).ToList();
}
公开无效洗牌()
{
Cards=Cards.OrderBy(c=>Guid.NewGuid()).ToList();
}
公共卡
{
var card=Cards.FirstOrDefault();
卡片。移除(卡片);
回程卡;
}
公共IEnumerable TakeCards(int numberOfCards)
{
var卡=卡。取(卡数);
var takeCards=作为卡片的卡片[]?cards.ToArray();
Cards.RemoveAll(takeCards.Contains);
回执卡;
}
}
}

您需要重写card类下的tostring。

您需要重写
卡隐式继承自的
对象的
tostring()方法的默认实现

例如:

public class Card
{
    public Suit Suit { get; set; }
    public CardNumber CardNumber { get; set; }

    public override string ToString()
    {
        return CardNumber + " of " + Suit;
    }
}

另外,您应该将
Suit
枚举修改为1到4。

如何执行此操作?我尝试了此操作,但没有找到合适的方法来覆盖。请确保您完全按照键入的方式复制方法签名。例如,您可能无意中键入了
public override String
(注意大写字母
S
)。Matt首先感谢您抽出时间帮助我。我仔细检查了我的代码,甚至尝试将你的代码复制/粘贴到我的代码中。还是一样的错误。错误1'u Game_uu.Card.Tostring()':找不到合适的方法重写将
Tostring()更改为
Tostring()