namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
object[] obj = new object[3];
obj[0] = new object();
obj[1] = "some string";
obj[2] = 10;
string[] strings = new string[] { "one", "two", "three" };
obj = strings; //---> No Error here, Why ?
int[] ints = new int[] { 1, 2, 3 };
obj = ints; /*-> Compiler error - Cannot implicitly convert type 'int[]' to 'object[]', Why ?*/
}
}
}
При выполнении шага, показанного выше, возникает ошибка компилятора. Но на предыдущем шаге ошибки нет. Кто-нибудь может объяснить мне такое поведение? Я использую VS 2010.
EDIT - Для полноты, опять же, компиляция не будет выполнена - Поддержка отклонений в .NET 4.0 очищена. Можно использовать новые ключевые слова в и out с параметрами родового типа.
List<object> objectList = new List<object>();
List<string> stringList = new List<string>();
objectList = stringList;