我正在研究一個圖書館用於紙牌遊戲。我花了幾個小時學習索引器,所以我可以有一個類似卡片類型的Deck類。然後,我通過從ArrayList繼承來實現同樣的事情和更多。因此,我問爲什麼當通過「:ArrayList」可以實現同樣的事情(以及更多)時,可能會遇到製作類可索引的麻煩。使用從ArrayList或List繼承的索引器VS <T>?
我想我的問題是不言自明的,但對於那些誰喜歡看代碼。
這裏是我的甲板類,它包含一個索引:
class DeckIndexer
{
private Card[] myData;
private int arrSize;
public DeckIndexer(int size)
{
arrSize = size;
myData = new Card[size];
for (int i = 0; i < size; i++)
{
myData[i] = null;
}
}
public Card this[int pos]
{
get
{
return myData[pos];
}
set
{
myData[pos] = value;
}
}
public Card this[Card c]
{
get
{
int count = 0;
for (int i = 0; i < arrSize; i++)
{
if (myData[i] == c)
{
count++;
}
}
return c;
}
set
{
for (int i = 0; i < arrSize; i++)
{
if (myData[i] == c)
{
myData[i] = value;
}
}
}
}
}
現在,這裏是第二個解決方案,從ArrayList中
class DeckInheritence : ArrayList
{
}
第二個解決方案傳承給了我20多個免費的方法,[ ]語法,然後保存我很多行代碼。第一個給我[]語法,連接到對象的方法,很難實現。
BTW,是的,我可以看到的ArrayList是給我的物體,不卡的數組,但沒有太多的不了了之得到它需要一個卡類型。
'arrSize'可以是代表與'myData.Length'搭配,不需要兩次。 – Firo