I have a VB class which overloads the Not
operator; this doesn't seem to be usable from C# applications.
Public Shared Operator Not(item As MyClass) As Boolean
Return False
End Operator
I can use this in VB.NET:
If Not MyClassInstance Then
' Do something
End If
I am trying to us this in a C# application but it won't build.
if (!MyClassInstance)
{
// do something
}
I get the error
Operator '!' cannot be applied to operand of type 'MyClass'
Can anyone tell me what I am missing?
The Not
operator in VB.NET is a bitwise operator, it produces the one's complement of its operand. It doesn't have the equivalent of C#'s !
operator, a logical operator. You must use the equivalent bitwise operator in C# to use your VB.NET operator overload:
if(~MyClassInstance)
{
// do something
}
You can write a function in VB.NET that will map to the C# logical operator. That needs to look like this:
<System.Runtime.CompilerServices.SpecialName> _
Public Shared Function op_LogicalNot(item As MyClass) As Boolean
Return False
End Function
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