Zuweisungsoperator überladen

05/10/2008 - 14:59 von Michel Bretschneider | Report spam
Moin,
Um meinen Code lesbarer zu gestalten würde ich gerne den
Zuweisungsoperator überladen.

Beispiel:
Public Class Bunch
Inherits List(Of Item)

' Sinnvolle Methoden

' Beispielmethode
Public Overrides Function ToString() As String
Dim sb As New System.Text.StringBuilder
For Each it As Item In Me
sb.Append(it.ToString & " ")
Next
Return sb.ToString
End Function
End Class

Public Class Item
' Sinnvolle Methoden
End Class

Public Class Bibo
Public Shared Function getRandomItems() as List(Of Item)
...



Von externen Librarys bekomme ich dann in der Regel List(of Item)
zurück. Wie kann ich dann den Zuweisungsoperator so überladen, daß einem
Bunch direkt die Liste zugewiesen werden kann?
so in etwa:

dim b as Bunch
b = Bibo.getRandomItems()

Das Folgende funktioniert leider nicht. Die Operatoren müssen wohl
Shared sein, aber damit geht's dann irgendwie auch nicht, weil dann der
Vergleichsoperator überschrieben wird.

Public Operator =(ByVal itList As List(Of Item)) As Bunch
Dim b as New Bunch
For Each it As Item in itList
b.add(it)
Next
Return b
End Operator

Wenn jemand eine Idee hat...

Danke im voraus

Michel
 

Lesen sie die antworten

#1 Thorsten Doerfler
05/10/2008 - 15:26 | Warnen spam
Michel Bretschneider schrieb:
Um meinen Code lesbarer zu gestalten würde ich gerne den
Zuweisungsoperator überladen.



Du kannst den Zuweisungsoperator nicht überladen, da Du damit die ganze
Semantik der Sprache verànderst, die ein Entwickler so nicht erwarten würde.

Beispiel:
Public Class Bunch
Inherits List(Of Item)

' Sinnvolle Methoden

' Beispielmethode
Public Overrides Function ToString() As String
Dim sb As New System.Text.StringBuilder
For Each it As Item In Me
sb.Append(it.ToString & " ")
Next
Return sb.ToString
End Function
End Class

Public Class Item
' Sinnvolle Methoden
End Class

Public Class Bibo
Public Shared Function getRandomItems() as List(Of Item)
...



Von externen Librarys bekomme ich dann in der Regel List(of Item)
zurück. Wie kann ich dann den Zuweisungsoperator so überladen, daß einem
Bunch direkt die Liste zugewiesen werden kann?
so in etwa:

dim b as Bunch
b = Bibo.getRandomItems()



Hier würde ich erwarten, dass b eine Referenz auf das Ergebnis von
Bibo.getRandomItems() erhàlt. Der Zuweisungoperator erhàlt also eine
völlig neue Bedeutung.

Wenn Du eine ganze Liste zu einer anderen hinzufügen möchtest, bietet
sich die AddRange() Methode an.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen