I have a class called Message
which overloads these operators:
public static bool operator ==(Message left, Message right)
public static bool operator !=(Message left, Message right)
public static bool operator ==(Message left, string right)
public static bool operator !=(Message left, string right)
public static bool operator ==(string left, Message right)
public static bool operator !=(string left, Message right)
I want the ==
and !=
operators keep comparing references of the types other than String
and Message
but,
var message = new Message();
var isNull = message == null;
gives me this:
The call is ambiguous between the following methods or properties: 'Message.operator ==(Message, Message)' and 'Message.operator ==(Message, string)'
I know it's because both Message
and String
are reference types and they both can be null
, but I want to be able to use ==
opreator for checking whether the message is null.
Can I overload ==
for null values? I tried overloading it for object
and call object.ReferenceEquals(object, object)
in the overload but that didn't help.
Provide an implementation for operator ==(Message left, object right)
and check the type of right
to see whether it is null, a string or a Message.
Alternatively, define an implicit constructor for Message that takes a string. See Operator overloading and different types for an example.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With