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 ?*/
}
}
}
Tôi gặp lỗi trình biên dịch trong khi thực hiện bước như minh họa ở trên. Nhưng, ở bước trên, không có lỗi. Ai đó có thể giải thích cho tôi hành vi này? Tôi đang sử dụng VS 2010.C# - Lỗi trình biên dịch - trong khi gán int [] cho đối tượng []
EDIT - Để hoàn tất, một lần nữa, thao tác này sẽ không biên dịch - Hỗ trợ khác biệt trong .NET 4.0 đã được dọn dẹp ngay bây giờ. Người ta có thể sử dụng từ khóa mới trong và ra với thông số loại chung.
List<object> objectList = new List<object>();
List<string> stringList = new List<string>();
objectList = stringList;
Bạn có hiểu sự khác nhau giữa loại giá trị và loại tham chiếu? – Oded