, когда я перехожу к определению списка <> Я вижу, что у него есть публичный блок Enumerator, который реализует интерфейсы IEnumerator<T>
, IDisposable и IEnumerator.Где общий список <> реализует сброс?
IEnumerator должен принудительно выполнить сброс - кроме Current и MoveNext. Но реализованы только Current и MoveNext. Как это может быть?
Где я могу найти Reset() из списка <>?
var list = new List<int>();
list.Add(23);
list.Add(44);
var Enumerator = list.GetEnumerator();
while (Enumerator.MoveNext())
{
Console.WriteLine(Enumerator.Current);
}
Enumerator.
И когда я пытаюсь его в коде нет Reset():
Ok - Я попытался показать скриншот, но они не позволяют мне.
Но копирование над кодом не показывает Reset-Method после Dot-operator (.) перечислителя.
Может кто-нибудь знать и пролить свет на это?
Я вижу, что он вызывает сброс IEnumerator, который является частью mscorlib.
var list = new List<int>();
list.Add(23);
list.Add(44);
var Enumerator = list.GetEnumerator();
Enumerator.MoveNext();
Enumerator.MoveNext();
Console.WriteLine(Enumerator.Current);
((IEnumerator<int>)Enumerator).Reset();
Enumerator.MoveNext();
И все же, поскольку IEnumerator - это интерфейс, как код может быть вызван им?
Сброс() в IEnumerator должен быть просто определением, а реализация остается тем, кто использует интерфейс.
Но как-то здесь фактическая функциональность обеспечивается только определением интерфейса, который будет реализован. Нигде я не вижу фактической реализации - и эту часть я не понимаю.
Спасибо, и да, я наткнулся на нехватку аппаранта Reset() –
Привет, мне пришлось отредактировать исходное сообщение, потому что в форматировании комментария ограничено. –
@ AndiTruman: теперь вы задали совершенно другой вопрос, как вторую часть, - я предлагаю вам удалить его снова из вопроса, так как это принципиально «как работают интерфейсы», который, как я подозреваю, рассматривается в другом месте ... –