Mam klasę z dwoma przesłonięciami dla operatora ==, aby porównać ją z innymi instancjami tej klasy i porównać z instancją ciągu.Sprawdzanie wartości Null jest niejednoznaczne dla klasy z kilkoma przesłonięciami dla operatora ==
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;
}
}
Jednak, gdy staram się porównać tę klasę na null:
Console.WriteLine(someObject == null);
pojawia się następujący błąd:
Error CS0121: The call is ambiguous between the following methods or properties: `SomeClass.operator ==(SomeClass, SomeClass)' and `SomeClass.operator ==(SomeClass, string)'
Jak należy definiować moje == zastępuje więc mogę nadal sprawdza wartości NULL tej klasy?
Być może coś jest mądry można zrobić z [ null coalesce] (http://msdn.microsoft.com/en-us/library/ms173224.aspx) – tnw