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()

C# ireadonlyinterface count not implemented error

IPackOfCards实现IReadOnlyCollection。这意味着除了IPackOfCards的成员之外,您还必须实现IReadOnlyCollection的所有成员,即Count属性和GetEnumerator方法,如本文所述。所有接口成员都必须是公共的,但是你的Count属性是私有的。您没有指定它的可访问性,所以默认为private