我從未在我的生活中用C#編寫過程,但我對Java的理解足夠好。我正在運行這個程序,每次它一直說計數/ IEnumerator尚未實現。我嘗試了各種不同的方式,並將它放在文件中的不同位置。我知道這將是一件非常容易的事,但我不明白。我也認爲這些是某種方法,所以不要問爲什麼他們坐在實例變量所在的位置。C#ireadonlyinterface count not implemented錯誤
有人可以向我解釋如何使用集合?這裏使用的集合是ireadonlycollection,它由在這個類中實現的IPackOfCards實現。
是否允許C#接口在其中實現?
using System;
using CodedTests.NUnit;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace CodedTests.NUnit
{
public class PackOfCards : IPackOfCards
{
private const int NUMCARDS = 52;
private int cardsInPack;
//private Card[] cards;
private Collection<ICard> pack = new Collection<ICard>();
int Count { get; }
public IEnumerator<ICard> GetEnumerator(){return pack.GetEnumerator();}
//IEnumerator IEnumerable.GetEnumerator(){ return GetEnumerator();}
public Collection<ICard> Create()
{
cards = new Card [NUMCARDS];
String [] values = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
String [] suits = {"Hearts", "Diamonds", "Spades", "Clubs"};
int cardsInPack = 0;
for(int i = 0 ; i<suits.Length; i++){
for(int j = 0; j<values.Length; j++, cardsInPack++){
cards[cardsInPack]= new Card(values[j], suits[i]);
}
}
return new pack;
}
public void Shuffle(){
Random num = new Random();
for(int i = 0; i<NUMCARDS;i++){
int ran = num.Next(NUMCARDS);
Card temp = cards[ran];
cards[ran] = cards[i];
cards[i] = temp;
}
}
public ICard TakeCardFromTopOfPack(){
int topCard = 0;
ICard cardRemoved = cards[topCard];
for(int i = 0;i<NUMCARDS-1;i++){
cards[i]=cards[i+1];
}
cards[cardsInPack] = null;
cardsInPack--;
return cardRemoved;
}
}
}
public class Card : ICard
{
private String value;
private String suit;
public Card(String v, String s)
{
value = v;
suit = s;
}
public String getValue(){
return value;
}
public String getSuit(){
return suit;
}
public String toString(){
return value+" of "+suit;
}
}
}
public interface IPackOfCards : IReadOnlyCollection<ICard>
{
void Shuffle();
ICard TakeCardFromTopOfPack();
}
public interface IPackOfCardsCreator
{
IPackOfCards Create();
}
public class PackOfCardsCreator : IPackOfCardsCreator
{
public IPackOfCards Create()
請注意,在我注意到他們想要使用集合之前,請先忘記它之前編寫的代碼的其他代碼 – spaga
是否有機會看到「IPackOfCards」接口的相關部分? –
當然,我現在只是修正縮進 – spaga