eng*_*ool 7 .net c# vb.net operator-overloading
我有一个VB类,它重载了Not运算符; 这似乎不适用于C#应用程序.
Public Shared Operator Not(item As MyClass) As Boolean
Return False
End Operator
Run Code Online (Sandbox Code Playgroud)
我可以在VB.NET中使用它:
If Not MyClassInstance Then
' Do something
End If
Run Code Online (Sandbox Code Playgroud)
我试图在C#应用程序中使用它,但它不会构建.
if (!MyClassInstance)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误
接线员'!' 不能应用于'MyClass'类型的操作数
谁能告诉我我失踪了什么?
Han*_*ant 15
将Not在VB.NET运算符是一个按位运算符,它产生其操作数的补数.它没有C#的!运算符,一个逻辑运算符.您必须在C#中使用等效的按位运算符来使用您的VB.NET运算符重载:
if(~MyClassInstance)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
您可以在VB.NET中编写一个映射到C#逻辑运算符的函数.这需要看起来像这样:
<System.Runtime.CompilerServices.SpecialName> _
Public Shared Function op_LogicalNot(item As MyClass) As Boolean
Return False
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |