我想知道爲什麼我得到堆棧溢出異常。我爲學校作業創建了一個簡單的紙牌遊戲,當我克隆卡片返回它們時,我得到了堆棧溢出異常。C#堆棧溢出
所以我得到這個卡類:
public class Card : ICloneable
{
....
#region ICloneable Members
public object Clone()
{
return this.Clone(); // <--- here is the error thrown when the first card is to be cloned
}
#endregion
}
,我有一類稱爲Hand
,然後克隆出牌:
internal class Hand
{
internal List<Card> GetCards()
{
return m_Cards.CloneList<Card>(); // m_Cards is a List with card objects
}
}
最後,我得到了一個擴展方法的List
:
public static List<T> CloneList<T>(this List<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
卡類錯誤(ICl onable法),
類型 'System.StackOverflowException' 未處理的異常發生在CardLibrary.dll
做卡需要是可變的,即他們有狀態,可以改變嗎?如果沒有,那麼你可以擁有一套不可變的卡片,你可以在不同的收藏中重複使用。不需要克隆。 – pjp 2009-07-29 09:42:08
請參閱關於ICloneable的討論:http://stackoverflow.com/questions/699210/why-should-i-implement-icloneable-in-c – peterchen 2009-07-29 09:57:41
閱讀這個問題的標題後,我認爲這屬於元。 ..--) – EricSchaefer 2009-07-29 10:04:35