2011-02-15 56 views
1

我一直在教自己C#(没有C++或Java),一个制作精致的扑克手解析器的项目上工作了一周。我终于投入并发布了我的第一个简单问题。c#声明一个变量作为参数,新手问题

我想我已经看到了各种方式的变量声明(新的VB/A体验)。以下是我想要做的一般想法。

public class CompareHandsClass : IComparer<clHiHand> 

...

public class clCardsHeld 
{ 
    protected List<clCard> _liCards = new List<clCard>(); 

    public clCardsHeld(List<clCard> CardsList) 
    { _liCards = CardsList; 
    } 

...

public class clHiHand : clCardsHeld 
{ 
    public clHiHand(List<clCard> CardsList) : base(CardsList) {} 

    List<clCard> _liTempCards; 
    CompareHandsClass HandComparer = new CompareHandsClass(); 
    ... 
    if (_liTempCards.Count >= 5 
    && HandComparer.Compare(clHiHand x = new clHiHand(_liTempCards), 
          clHiHand y = new clHiHand(_liFlushCards))) 

所以我的问题是下来与HandComparer.Compare结束。我有两个我的clCard类型的列表,但我不能将它们发送到.Compare(),因为它需要clHiHand对象。所以我试图将列表作为参数一次性发送给临时clHiHand类型变量的构造函数。我可以做到这一点不能(除了使用几行声明)?感谢任何初学者的帮助(我有点失望,我被困在所有地方的这个小东西......)

哦,PS,我希望我没有搞砸在这个示例代码中的其他任何东西,因为我从这些扩展的最后工作版本中离开了。

+0

那么你是说你有一个clHiHand比较器,你想用它来比较clCard类型?除非你的clCard类型是clHiHand的子类,那么你不能这样做。这就像使用字符串比较器来比较整数。 clCard和clHiHand之间必须有关系。 – Joe 2011-02-15 05:44:26

+0

按照Ken的建议,您可以将_liTempCards和_LiFlushCards投射到clHiHand上。 – sajoshi 2011-02-15 06:36:17

回答

0

您可能会丢失clHiHand xclHiHand y。然后调用看起来像

HandComparer.Compare(new clHiHand(_liTempCards), new clHiHand(_liFlushCards))