什么是VB.NET中重载'And'运算符的示例?

时间:2010-11-21 11:08:45

标签: vb.net operator-overloading

因此,对于查找“And”或“Or”等重载运算符的示例而言,Google不是一个好的选择,因为它会尝试将它们解析为搜索查询本身的运算符。 MSDN也没有提供如何实现重载And运算符的示例,因此我不确定如何为我的项目正确地重载它。

有没有人至少有一个“和”的例子? “或”或“Xor”(或任何其他人)将是奖金。我不确定我是否需要在我的对象中重载这些操作符,因为我还在构建它们并且还没有计划好。但是有可能被谷歌索引的例子可能有助于拯救很多人的理智......

2 个答案:

答案 0 :(得分:3)

重载逻辑运算符的方式与重载一元或算术运算符的方式相同。

我实际上无法想到这个目前有用的情况,但为了举例,这里有一个覆盖AndOr运算符的示例结构:

Public Structure Foo

    Public Shared Operator And(ByVal val1 as Foo, ByVal val2 as Foo) As Foo
        ''#(calculate the logical And of the two specified values here)
        Return New Foo(val1.Bar And val2.Bar, val1.Baz And val2.Baz)
    End Operator

    Public Shared Operator Or(ByVal val1 as Foo, ByVal val2 as Foo) As Foo
        ''#(calculate the logical Or of the two specified values here)
        Return New Foo(val1.Bar Or val2.Bar, val1.Baz Or val2.Baz)
    End Operator

End Structure

MSDN page提供了一些其他示例和进一步说明。

答案 1 :(得分:1)

Here是一篇关于MSDN的文章,解释了VB.NET 2005中的运算符重载,这应该与2010年相关。

Add的示例,来自文章(使用文章中定义的ComplexNumber类):

Public Shared Operator +(cn1 As ComplexNumber, _
            cn2 As ComplexNumber) As ComplexNumber

   Dim Result As New ComplexNumber( _
                        cn1.Real() + cn2.Real(), _
                       cn1.Imaginary() + cn2.Imaginary())

   Return Result

End Operator