я написать общий класс, которые реализуют IEnumerable<T>
:Почему я не получаю ошибку компилятора в изменении типа foreach над IEnumeable <T>?
public class EnumerableObject<T> : IEnumerable<T>
{
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
...
}
public IEnumerator GetEnumerator()
{
...
}
}
Таким образом, я могу итерацию над объектом этого класса с foreach
, но если я изменить тип Еогеасп переменной, компилятор не дает мне ошибку и я могу написать этот код без ошибок компилятора:
foreach (string item in new EnumerableObject<int>())
{
....
}
Но если я перебирать общий список я получил ошибку компилятора:
foreach (string item in new List<int>())
{
...
}
Cannot convert type 'int' to 'string'
Я думаю List<T>
Состояние класса похоже на мой класс EnumerableObject, но почему я не получаю ошибку компилятора в моем случае?
Вы пытаетесь выполнить итерацию строки с помощью строки. Это никогда не сработает. Почему вы используете строку? – CathalMF
@CathalMF, Если я полностью прочитал вопрос, я попытаюсь смоделировать конфликтную ситуацию, чтобы уточнить вопрос. –