我有一个VB类,它会重载Not
运算符;这似乎无法从C#应用程序中使用。
Public Shared Operator Not(item As MyClass) As Boolean
Return False
End Operator
我可以在VB.NET中使用它:
If Not MyClassInstance Then
' Do something
End If
我在C#应用程序中尝试使用它,但它不会构建。
if (!MyClassInstance)
{
// do something
}
我收到错误
运营商'!'不能应用于' MyClass'
类型的操作数
有谁能告诉我我错过了什么?
答案 0 :(得分:15)
VB.NET中的Not
运算符是按位运算符,它生成其操作数的一个补码。它没有C#的!
运算符,一个逻辑运算符。必须在C#中使用等效的按位运算符来使用VB.NET运算符重载:
if(~MyClassInstance)
{
// do something
}
您可以在VB.NET中编写一个映射到C#逻辑运算符的函数。这需要看起来像这样:
<System.Runtime.CompilerServices.SpecialName> _
Public Shared Function op_LogicalNot(item As MyClass) As Boolean
Return False
End Function