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 ?*/
}
}
}
Wystąpił błąd kompilatora podczas wykonywania kroku, jak pokazano powyżej. Ale w poprzednim kroku nie ma błędu. Czy ktoś może mi wyjaśnić to zachowanie? Używam VS 2010.C# - Błąd kompilatora - podczas przypisywania int [] do obiektu []
EDYCJA - Dla zapewnienia kompletności, znowu, to nie będzie kompilacji - Wsparcie wariancji w .NET 4.0 zostało wyczyszczone teraz. Można użyć nowych słów kluczowych w i z z ogólnymi parametrami typu.
List<object> objectList = new List<object>();
List<string> stringList = new List<string>();
objectList = stringList;
Rozumiesz różnice między typ wartości i typy referencyjne? – Oded