khi tôi cast int và float để đối tượng và so sánh chúng bình đẳng luôn luôn là sai. Tại sao?tại sao bằng không làm việc giống nhau khi các mục được đúc thành đối tượng?
float f = 0.0f;
int i = 0;
Console.WriteLine(f.Equals(i)); // true
Console.WriteLine(i.Equals(f)); // false
Console.WriteLine(i == f); // true
Console.WriteLine("----------------");
object obf = f;
object obi = i;
Console.WriteLine(obf.Equals(obi)); // false
Console.WriteLine(obi.Equals(obf)); // false
Console.WriteLine(obi == obf); // false
Console.WriteLine("----------------");
Cập nhật: này KHÔNG phải là trường hợp đối với cùng loại
int i1 = 1;
int i2 = 1;
object oi1 = i1;
object oi2 = i2;
Console.WriteLine(oi1.Equals(oi2)); // true
Console.WriteLine(oi2.Equals(oi1)); // true
chuyển đổi ngầm có được xử lý tại thời gian biên dịch không? –
@CharlesLambert: Có. Hãy xem IL và bạn sẽ thấy nó đang được thực hiện. –