给定以下代码:
static void Main() {
string[] myArray = {"One", "Two", "Three"};
PrintArray(myArray);
}
static void PrintArray(System.Array array1) {
foreach (string s in array1)
Console.WriteLine(s);
}
我很惊讶我可以毫无错误地编译这些行,因为在PrintArray
编译器中无法知道 array1 是什么类型的数组(在这种情况下是System.string[]
)。如果我这样更改 foreach 行:foreach (int s in array1)
,代码仍将编译,但会生成运行时无效转换异常。
在这种情况下,编译不应该确保在 foreach 语句中只能使用 Object 吗?