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()