A better look at the Foreach statement
Earlier this week i was a bit surprised that the following code compiled without errors or warning messages. I expected at least a warning that i was trying to assign a double value to an integer parameter
static void Main(string[] args)
{
double[] values = new double[] { 1.1, 2.2, 3.3, 4.4, 5.5 };
Console.WriteLine("foreach with int:");
// happily iterate over the double values as if they are ints...
// this outputs the lines 1, 2, 3, 4 and 5.
foreach (int value in values)
{
Console.WriteLine(value);
}
}
So i decided to dive into the C# Language Specification (Section 15.8.4 The foreach statement) where i found the following:
{ E e = ((C)(x)).GetEnumerator(); try { V v; while (e.MoveNext()) { v = (V)(T)e.Current; embedded-statement } } finally { … // Dispose e } }
> </div>