Hành vi của toán tử == phụ thuộc vào cách biến mà bạn đang áp dụng nó được khai báo (không phải trên lớp của đối tượng, tôi sẽ thêm một ví dụ).
Đối với các loại giá trị, nó sẽ so sánh các giá trị của chúng.
Đối với loại tham chiếu a == b trả về true nếu a là cùng một đối tượng với b, trừ khi toán tử == bị quá tải. Không được ghi đè như những người khác đã nói, bạn không thể ghi đè các toán tử trong C# vì chúng không phải là ảo.
object obj_a, obj_b; string str_a, str_b;
str_a = "ABC";
str_b = new string("ABC".ToCharArray());
obj_a = str_a;
obj_b = str_b;
Console.WriteLine("str_a == str_b = {0}", str_a == str_b); // in string == operator is overloaded
Console.WriteLine("str_a.Equals(str_b) = {0}", str_a.Equals(str_b)); // string overrides Object.Euqals
Console.WriteLine("obj_a == obj_b = {0}", obj_a == obj_b); // in object == operator is not overloaded
Console.WriteLine("obj_a.Equals(obj_b) = {0}", obj_a.Equals(obj_b)); // Object.Equesl is virtual and overridden method from string will be executed.
Console.ReadKey();
Kết quả của chương trình đó là
str_a == str_b = True
str_a.Equals(str_b) = True
obj_a == obj_b = False
obj_a.Equals(obj_b) = True
Nguồn
2009-08-17 15:10:55
Chỉ cần một thông tin nhanh: nếu bạn quá tải ==, bạn cũng phải thực hiện =!. Tương tự cũng vậy cho <= and > =. – Tarik