2016-03-10 1 views
1
public class PatchInfo : IEnumerable<string> 
{ 
    ... 
    public IEnumerator<string> GetEnumerator() 
    { 
     LinkedList<string> list = new LinkedList<string>(); 
     ... 
     return list; 
    } 
} 

имя интерфейса «IEnumerable», поэтому я думаю, что тип возвращаемого значения «IEnumerator» может быть исправлено.Наследование IEnumerable <string> причина ошибки CS0738

, но это может вызвать ошибку компиляции

CS0738: ... не реализует элемент интерфейса ... потому что он делает не подходящий тип возвращаемого «System.Collections.IEnumerator».

что пойдет не так?

ответ

1

IEnumarable < T> наследует IEnumarable. Поэтому вам нужно также реализовать метод IEnumerator IEnumerable.GetEnumerator().

IEnumerator IEnumerable.GetEnumerator() 
{ 
    return GetEnumerator(); 
} 

Кроме того, ваш код не будет компилироваться, потому что GetEnumerator метод должен возвращать IEnumerator вместо IEnumarable. Используйте метод GetEnumarator для получения IEnumerator.

public class TestEnumarable : IEnumerable<string> 
{ 
    public IEnumerator<string> GetEnumerator() 
    { 
     LinkedList<string> a = new LinkedList<string>(); 

     return a.GetEnumerator(); 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return GetEnumerator(); 
    } 
} 
+0

Он все еще получаю сообщение об ошибке, как 'list' является' 'LinkedList , а не' 'IEnumerator DGibbs

+0

что CS0305 код причины ошибки: Использование универсального типа«System.Collections.Generic.IEnumerator 'требует 1 аргумент типа ... – user3244483

+0

@ user3244483 на какой строке? – Valentin

 Смежные вопросы

  • Нет связанных вопросов^_^