Что является примером перегруженного оператора «И» в VB.NET? - PullRequest
4 голосов
/ 21 ноября 2010

Так что Google не является хорошим выбором для поиска примеров перегруженных операторов, таких как «И» или «Или», потому что он пытается проанализировать их как операторы для самого поискового запроса. MSDN также не предоставляет примеров того, как реализовать перегруженный оператор And, поэтому я не уверен, как правильно перегрузить его для моего проекта.

У кого-нибудь есть пример "А" как минимум? «Или» или «Xor» (или любые другие) будет бонусом. Я не уверен, нужно ли мне перегружать эти операторы в моих объектах только сейчас, так как я все еще строю их и еще не планировал дальше. Но наличие примеров, которые могут быть проиндексированы Google, вероятно, поможет сохранить здравомыслие многих людей ...

Ответы [ 2 ]

3 голосов
/ 21 ноября 2010

Вы перегружаете логические операторы так же, как вы перегружаете унарные или арифметические операторы.

На самом деле я не могу вспомнить случай, когда это было бы полезно в данный момент, но для примера, вот пример структуры, которая переопределяет операторы And и Or:

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 дает некоторые другие примеры и дополнительные пояснения.

1 голос
/ 21 ноября 2010

Здесь - статья о 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...