Есть класс, реализующий интерфейс IEnumerable
class MyClass : IEnumerable
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)this).GetEnumerator(); //всё хорошо
return (IEnumerable)this.GetEnumerator(); //error;
}
Почему первый вариант компилятор принимает, а второй подчеркивает, что такая запись недопустима, если, по идеи, оба эти записи являются операциями преобразования?
Ответ
Потому что он думает, что Вы хотите переменную типа IEnumerable преобразовать в IEnumerator. То есть расценивает это как попытку вызвать this.GetEnumerator(), преобразовать реультат в IEnumerable (явным кастом) и вернуть как IEnumerator (неявным кастом) - тип возвращаемого значения, объявленный в декларации метода. Просто:
return this.GetEnumerator();
Комментариев нет:
Отправить комментарий