抱歉,我对问题的标题做得不太好,希望它会通过一些代码来体现
我创建了一个存储扑克手信息的类,如下所示
public class BestHandSummary<T>
{
public Func<T, bool> Test { get; set; }
public Ranking Rank { get; set; } //Enum: Nothing, TwoPair, Straight, Flush, Poker :in ascending order
public int BestCard { get; set; }
public BestHand(Ranking r)
{
Rank = r;
}
..//default ctor
}
我按照最有价值手牌的顺序初始化了规则集合,这样当我采用匹配规则的 First() 时,最强大的手牌将被选为最佳手牌。
rules = new List<BestHandSummary<PokerHand>>()
{
new BestHandSummary<PokerHand> { Test = h => h.HandContainsFourOfAKind(out bestCard),
Rank = Ranking.FourOfAKind,
BestCard = bestCard },
new BestHandSummary<PokerHand> { Test = h => h.HandContainsFlush(),
Rank = Ranking.Flush },
new BestHandSummary<PokerHand> { Test = h => h.HandContainsStraight(out bestCard),
Rank = Ranking.Straight,
BestCard = bestCard },
new BestHandSummary<PokerHand> { Test = h => h.HandContainsTwoPair(out bestCard),
Rank = Ranking.Straight,
BestCard = bestCard },
};
private BestHandSummary<PokerHand> GetAPlayersBestHand(PokerHand hand)
{
bool hasAny = rules.Any(r => r.Test(hand));
if (hasAny)
{
return rules.Where(r => r.Test(hand) == true).First();
}
return new BestHandSummary<PokerHand>(Ranking.Nothing);
}
我似乎无法弄清楚的是如何将输出参数 bestCard 隧道化到 BestHandSummary 类的 BestCard 属性中?上面的代码不起作用,BestCard = bestCard 没有被分配,我可以理解为什么,但我想知道是否有任何小的改变可以修复它..