4 Stimmen

Was ist ein Beispiel für einen überladenen "Und"-Operator in VB.NET?

Google ist also keine gute Wahl, um nach Beispielen für überladene Operatoren wie "And" oder "Or" zu suchen, weil es versucht, sie als Operatoren für die Suchanfrage selbst zu analysieren. MSDN bietet auch keine Beispiele für die Implementierung eines überladenen "And"-Operators, sodass ich nicht sicher bin, wie ich ihn für mein Projekt richtig überladen kann.

Hat jemand zumindest ein Beispiel für "Und"? "Or" oder "Xor" (oder andere) wären ein Bonus. Ich bin mir nicht sicher, ob ich diese Operatoren in meinen Objekten überladen muss, da ich sie noch ausbaue und noch nicht weiter geplant habe. Aber Beispiele zu haben, die von Google indiziert werden könnten, wird wahrscheinlich vielen Leuten den Verstand retten...

3voto

Cody Gray Punkte 229889

Sie überladen die logischen Operatoren auf dieselbe Weise wie die unären oder arithmetischen Operatoren.

Mir fällt im Moment kein Fall ein, in dem dies nützlich wäre, aber um ein Beispiel zu geben, hier ist eine Beispielstruktur, die die And y Or Betreiber:

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

Diese MSDN-Seite enthält weitere Beispiele und Erläuterungen.

1voto

Oded Punkte 475566

Hier ist ein Artikel auf MSDN, der das Überladen von Operatoren in VB.NET 2005 erklärt, dies sollte auch für 2010 relevant sein.

Das Beispiel für Add aus dem Artikel (unter Verwendung der ComplexNumber Klasse, die in dem Artikel definiert ist):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X