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

C# 使用C中的重载VB.NET Not运算符#,c#,.net,vb.net,operator-overloading,C#,.net,Vb.net,Operator Overloading,我有一个VB类,它重载Not操作符;这似乎不适用于C#应用程序 公共共享运算符(项作为MyClass)不是布尔值 返回错误 终端操作员 我可以在VB.NET中使用它: 如果不是MyClassInstance,则 “做点什么 如果结束 我试图在C#应用程序中实现这一点,但它无法构建 if (!MyClassInstance) { // do something } 我得到了错误 接线员‘!’无法应用于“MyClass”类型的操作数 有人能告诉我我缺少什么吗?VB.NET中的No

我有一个VB类,它重载
Not
操作符;这似乎不适用于C#应用程序

公共共享运算符(项作为MyClass)不是布尔值
返回错误
终端操作员
我可以在VB.NET中使用它:

如果不是MyClassInstance,则
“做点什么
如果结束
我试图在C#应用程序中实现这一点,但它无法构建

if (!MyClassInstance) 
{ 
     // do something
}
我得到了错误

接线员‘!’无法应用于“MyClass”类型的操作数


有人能告诉我我缺少什么吗?

VB.NET中的
Not
运算符是一个位运算符,它生成其操作数的1的补码。它没有C#的
的等价物运算符,逻辑运算符。必须在C#中使用等效的位运算符才能使用VB.NET运算符重载:

if(~MyClassInstance) 
{ 
     // do something
}
您可以在VB.NET中编写一个函数,该函数将映射到C#逻辑运算符。这需要如下所示:

_
公共共享函数op_LogicalNot(项作为MyClass)作为布尔值
返回错误
端函数

尝试使用参数括号编写类名,因为必须调用返回布尔值的函数。i、 e
if(!MyClassInstance()){//do something}
感谢您的解释,不幸的是,如果我使用op_LogicalNot,我不允许也使用VB not运算符,因此我可以在VB中使用奇怪的或在C#中使用奇怪的。我将坚持在C#中使用逐位运算符。有趣的是,Visual studio抱怨说,具有相同名称的方法声明了两次,但它确实构建并运行了。干杯