使用来自C#的重载VB.NET Not运算符

我有一个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’类型的操作数

谁能告诉我我失踪了什么?

VB.NET中的Not运算符是一个按位运算符,它产生其操作数的一个补码。 它没有相当于C#的! 运算符,逻辑运算符。 您必须在C#中使用等效的按位运算符来使用您的VB.NET运算符重载:

 if(~MyClassInstance) { // do something } 

您可以在VB.NET中编写一个映射到C#逻辑运算符的函数。 这需要看起来像这样:

  _ Public Shared Function op_LogicalNot(item As MyClass) As Boolean Return False End Function