Why does var evaluate to System.Object in “foreach (var row in table.Rows)”?

That’s because the DataRowCollection class only implements the non-generic version of IEnumerable. So the compiler doesn’t know what the type of the variable is.

By explicitly putting the type in there, you basically tell the compiler to generate an explicit cast from object to DataRow.

This is a problem you’ll find with many of the collections and classes added back in the .NET 1.x days, before generics were available.

Leave a Comment