Почему я не могу переопределить методы интерфейса?C#

Место общения программистов C#
Anonymous
Почему я не могу переопределить методы интерфейса?

Сообщение Anonymous »

Предположим, у меня есть следующий интерфейс.

Код: Выделить всё

interface CardHolder : IEnumerable
{
///  ...
void PutCard(Card card);

///  ...
void PutCards(Card[] card);

/// Some more methods...
}
Я реализую это следующим образом.

Код: Выделить всё

public class ArrayCardHolder : CardHolder
{
private Card[] _cards;
private int _size = 0;

public ArrayCardHolder(int capacity)
{
_cards = new Card[capacity];
}

public void PutCard(Card card)
{
if (IsFull())
throw new Exception("This CardHolder is full. Capacity: " + Capacity());

_cards[_size++] = card;
}

public void PutCards(Card[] cards)
{
if (_size + cards.Length > _cards.Length)
throw new Exception("Adding the Cards would exceed this CardHolder its capacity. Capacity: " + Capacity());

for (int index = 0; index < cards.Length; index++)
_cards[_size++] = cards[index];
}
public IEnumerator GetEnumerator()
{
for (int index = 0; index < _size; index++)
yield return _cards[index];
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}

///More methods.

}
Почему я не могу использовать ключевое слово override в своем ArrayCardHolder
(например, public void override PutCard(Card card) { / //реализация , чтобы указать, что метод реализует (т.е. переопределяет) интерфейс. В этом случае проект откажется от сборки.

Почему это происходит? однако работает при переопределении ToString(). И почему это не работает при реализации CompareTo(T t) из IComparable?

Что мне следует использовать вместо этого? Меня беспокоит, что документация из интерфейса не будет применяться к моим методам реализации. Так обстоит дело в Java, когда используется аннотация @Override.>

Подробнее здесь: https://stackoverflow.com/questions/382 ... ce-methods

Вернуться в «C#»