C# ireadonlyinterface count not implemented error
本文关键字:implemented error not count ireadonlyinterface | 更新日期: 2023-09-27 18:02:17
我一生中从未用c#编程,但我很了解java。我正在运行这个程序,每次它都说count/IEnumerator还没有实现。我尝试了各种不同的方法,并把它放在不同的位置。我知道这将是一件非常容易的事情,但我不理解它。我也假设这些是某种方法,所以不要问为什么他们坐在实例变量的地方。
谁能给我解释一下如何使用集合?这里使用的集合是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()
IPackOfCards
实现IReadOnlyCollection
。这意味着除了IPackOfCards
的成员之外,您还必须实现IReadOnlyCollection
的所有成员,即Count
属性和GetEnumerator
方法,如本文所述。所有接口成员都必须是公共的,但是你的Count
属性是私有的。您没有指定它的可访问性,所以默认为private
。