Я новичок дженериков в C# и при чтении книги наткнулся на пример:Использование дженериков вместо литья для AsEnumerable
var cars = from car in data.AsEnumerable()
where
car.Field<string>("Color") == "Red"
select new
{
ID = car.Field<int>("CarID"),
Make = car.Field<string>("Make")
};
Автор говорит, что car.Field<string>("Color")
дает дополнительную проверку по сравнению с (string)car["Color"]
время компиляции. Но как компилятор знает, что car.Field<string>("Color")
скомпилирован для «Цвет», а не для «CarID»? Или есть какая-то еще «дополнительная проверка времени компиляции», которую я пропускаю?
@DBM, 'car' не является' IEnumerable ', это' T'. –
svick
Ах, ты прав. Я устал ... T может быть «DataRow» –