a_enumNumber == CardNumbers.ViceJoker)
{
throw(new InvalidOperationException
("CardColors.None、CardNumbers.Joker和ViceJoker不能用于Card对象")) ;
}
else
{
this.m_enumColors = a_enumColors ;
this.m_enumNumber = a_enumNumber ;
}
}
#endregion
#region 改写父类方法
/// <summary>
/// 改写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return this.m_enumColors.ToString() + " " +this.m_enumNumber.ToString() ;
}
/// <summary>
/// 重写取得哈希值
/// </summary>
/// <returns></returns>
public override int GetHashCode()
{
return (int)(System.Math.Pow(100 , (double)this.m_enumColors + 1)
+ (double)this.m_enumNumber) ;
}
/// <summary>
/// 重写equals方法
/// </summary>
/// <param name="obj">要判断的对象</param>
/// <returns></returns>
public override bool Equals(object obj)
{
//断言
Debug.Assert(obj != null , "要比较的对象不能为空") ;
return obj.GetHashCode() == this.GetHashCode() ;
}
/// <summary>
/// 改写父接口方法
/// </summary>
/// <param name="obj">要比较的对象</param>
/// <returns>
/// 小于零 此实例小于 obj。
/// 零 此实例等于 obj。
/// 大于零 此实例大于 obj。
/// </returns>
public int CompareTo(object obj)
{
if(this.GetHashCode() > obj.GetHashCode())
{
return 1 ;
}
else if(this.GetHashCode() < obj.GetHashCode())
{
return -1 ;
}
else
{
return 0 ;
}
}
#endregion
}//end class
}//end namespace
file: Joker.cs
using System;
namespace Bigeagle.Games.Cards
{
/// <summary>
/// Joker
/// <br>author: bigeagle</br>
/// <br>date: 2002/4/20</br>
/// <br>History: 2002/4/20</br>
/// </summary>
/// <remarks>继承card类</remarks>
public sealed class Joker : Bigeagle.Games.Cards.Card
{
public Joker()
{
this.m_enumColors = CardColors.None ;
this.m_enumNumber = CardNumbers.Joker ;
}
/// <summary>
/// 改写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return "Joker" ;
}
}//end method
}//end namespace
file: ViceJoker.cs
using System;
namespace Bigeagle.Games.Cards
{
/// <summary>
/// vice joker
/// <br>author: bigeagle</br>
/// <br>date: 2002/4/19</br>
/// <br>History: 2002/4/19</br>
/// </summary>
public sealed class ViceJoker : Bigeagle.Games.Cards.Card
{
public ViceJoker()
{
this.m_enumColors = CardColors.None ;
this.m_enumNumber = CardNumbers.ViceJoker ;
}
/// <summary>
/// 改写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return "ViceJoker" ;
}
}//end class
}//end namespace
关键词:一个扑克游戏的诞生---扑克牌及相关类代码兼谈异常(中)