使用来自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