Ho una classe con due sostituzioni per operatore ==, per confrontarla con altre istanze di questa classe e per confrontarla con l'istanza della stringa.Il controllo Null è ambiguo per una classe con più sostituzioni per operatore ==
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;
}
}
Tuttavia, quando provo a confrontare questa classe per nulla:
Console.WriteLine(someObject == null);
ottengo il seguente errore:
Error CS0121: The call is ambiguous between the following methods or properties: `SomeClass.operator ==(SomeClass, SomeClass)' and `SomeClass.operator ==(SomeClass, string)'
Come devo definire il mio == sovrascrive in modo che posso controlla ancora le istanze di questa classe?
Forse c'è qualcosa di intelligente che si può fare con un [ null coalesce] (http://msdn.microsoft.com/en-us/library/ms173224.aspx) – tnw