繁体   English   中英

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

[英]Using overloaded VB.NET Not operator from C#

我有一个重载Not运算符的 VB 类; 这似乎不适用于 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# 逻辑运算符的函数。 这需要看起来像这样:

<System.Runtime.CompilerServices.SpecialName> _
Public Shared Function op_LogicalNot(item As MyClass) As Boolean
    Return False
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM