c# – 正确使用LINQ来改组牌组

c# – 正确使用LINQ来改组牌组,第1张

概述我正在尝试写一个简单的纸牌游戏.为了提出一个好的改组算法,我遇到了Jeff Atwood在编码恐怖片上的 post. 但是,当我在调用构造函数后查看对象的内容时,它们不会被洗牌. 以下是我尝试使用Jeff的解决方案: class MainDeck : List<Card>{ public MainDeck() { this.Add(new Card(1, "Hear 我正在尝试写一个简单的纸牌游戏.为了提出一个好的改组算法,我遇到了Jeff Atwood在编码恐怖片上的 post.

但是,当我在调用构造函数后查看对象的内容时,它们不会被洗牌.

以下是我尝试使用Jeff的解决方案:

class MainDeck : List<Card>{   public MainDeck()    {        this.Add(new Card(1,"Hearts"));        this.Add(new Card(2,"Hearts"));        this.Add(new Card(3,"Hearts"));        ...        this.OrderBy(a => GuID.NewGuID());    }}

这是卡的代码:

class Card    {        string suit;        int value;        public Card(int value,string suit)        {            this.value = value;            this.suit = suit;        }        bool isFaceCard()        {            if (value >= 11 || value == 1)                return true;            else                return false;        }        public overrIDe string ToString()        {            return (value +"," + suit);        }    }

我应该改变什么来改变洗牌工作?

解决方法 liNQ方法不会改变现有的集合.所以这句话什么都不做:this.OrderBy(a => GuID.NewGuID());
此外,我很确定你不能分配给它,所以你必须要么不从List< T>继承. (这很好),或做这样的事情:

var sorted = this.OrderBy(a => GuID.NewGuID()).ToList();this.Clear();this.AddRange(sorted);

另外看看这个SO answer,还有更正确的改组算法.

总结

以上是内存溢出为你收集整理的c# – 正确使用LINQ来改组牌组全部内容,希望文章能够帮你解决c# – 正确使用LINQ来改组牌组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1226145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存