Tôi có một lớp với hai ghi đè cho toán tử ==, để so sánh nó với các phiên bản khác của lớp này và so sánh với thể hiện chuỗi.Kiểm tra rỗng không rõ ràng đối với một lớp với một số ghi đè cho toán tử ==
class SomeClass
{
string value;
public SomeClass (string _Value)
{
value = _Value;
}
static public bool operator == (SomeClass C1, SomeClass C2)
{
return C1.value == C2.value;
}
static public bool operator != (SomeClass C1, SomeClass C2)
{
return C1.value != C2.value;
}
static public bool operator == (SomeClass C1, string C2)
{
return C1.value == (string) C2;
}
static public bool operator != (SomeClass C1, string C2)
{
return C1.value != (string) C2;
}
}
Tuy nhiên, khi tôi cố gắng để so sánh lớp này để null:
Console.WriteLine(someObject == null);
tôi nhận được lỗi sau:
Error CS0121: The call is ambiguous between the following methods or properties: `SomeClass.operator ==(SomeClass, SomeClass)' and `SomeClass.operator ==(SomeClass, string)'
Làm thế nào tôi nên xác định == tôi sẽ ghi đè vì vậy tôi có thể vẫn còn null-kiểm tra trường hợp của lớp này?
Có lẽ có điều gì đó thông minh bạn có thể làm với một [ null coalesce] (http://msdn.microsoft.com/en-us/library/ms173224.aspx) – tnw