There is a good article on MSDN on when to use == and when to use Equals.
Về cơ bản có 2 loại bình đẳng: bình đẳng tham khảo và bình đẳng về giá trị. Nếu 2 đối tượng có tham chiếu bình đẳng, do đó chúng cũng có giá trị bình đẳng (cả hai tham chiếu đều trỏ đến cùng một đối tượng, do đó tất nhiên giá trị của chúng giống nhau).
Ngược lại, (và trong trường hợp của bạn) không phải lúc nào cũng đúng. Nếu 2 đối tượng có giá trị bình đẳng thì chúng không nhất thiết phải có tính bình đẳng. Trong trường hợp của bạn ==
hoạt động như bình đẳng tham chiếu.
Thông thường bạn muốn là Equals
, đây là phương thức ảo được xác định trong System.Object.
Điều bạn thường không muốn cho các loại tham chiếu là ==
, thông thường nó so sánh xem hai tham chiếu có tham chiếu đến cùng một đối tượng hay không.
Trong trường hợp của bạn A
và B
được đóng hộp thành 2 đối tượng khác nhau. A
đề cập đến số đầu tiên và B
là từ thứ hai. ==
đang thử nghiệm và thấy rằng cả hai đều là referring
đối với những thứ khác nhau.
Nguồn
2010-05-28 15:13:29
Có thể so sánh Enum ném ngoại lệ không? nếu có, thì giải pháp của nó là gì? –