簡體   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