Eigene ToString Funktion innerhalb einer eigenen Klasse

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Rootbob91.

    Eigene ToString Funktion innerhalb einer eigenen Klasse

    Guten Tag zusammen,

    ich habe eine (Beispiel-) Klasse, die wie folgt aufgebaut ist:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class foo
    2. ''' <summary>
    3. '''
    4. ''' </summary>
    5. ''' <param name="Param1">Die Bezeichnung der Tabelle innerhalb der Datenbank</param>
    6. ''' <param name="Param2">Ein zusätzlicher String zur normalen Errormeldung um genauer zu definieren wo das Error aufgetaucht ist</param>
    7. ''' <returns>Gibt etwas wieder</returns>
    8. ''' <remarks>Bla</remarks>
    9. Public function GET_Test(ByVal Tabellenname As String, Optional byval sErrormeldungAddon As string) As List(Of string)
    10. Dim slist_Temp As New List(Of String)
    11. slist_Temp.Add("Test1")
    12. slist_Temp.Add("Test2")
    13. slist_Temp.Add("Test3")
    14. Return slist_Temp
    15. End Function
    16. End Class



    Wie ihr seht, erzeugt der Aufruf der Funktion Get_Test eine Liste vom Typ String und gibt Sie auch wieder.

    Meine Frage:
    Wie stelle ich das jetzt an, dass ich zb. wenn ich diese Funktion Anspreche, noch eine Unterfunktion habe zb.

    VB.NET-Quellcode

    1. foo.Get_Test.ToString
    ?

    Geht das nur via Property? Wie geht das überhaupt?

    Mir ist durchaus bewusst, dass ich einen ähnlichen Effekt erreichen kann, wenn ich zb. eine Integer Variable als Indikator setze (also in den Funktionsparametern), der dann schaut ist die Variable 1, gebe es als List wieder, ist die Variable 2, gebe als String wieder.

    Aber ist nicht genau das was ich gerne hätte. Zudem interessiert es mich auch so schon wie man sowas macht.



    Ich freue mich über jede hilfreiche Antwort!


    Lg Rob
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Das geht so erstmal nicht, denn List ist ja ne eigene Klasse, die du nicht verändern kannst. Es gibt List.ToString(), aber da würdest du in deinem Fall dann sowas wie System.Collections.Generic.List'<string> zurückbekommen.
    Was genau sollte eine solche Funktion denn zurückgeben, auf dein Beispiel bezogen?
    Wenn Du eine eigene Implementierung von ToString erreichen willst, dann => Erstelle Dir eine Ableitung von List(Of T) und überschreibe ToString() und implementiere Deine eigene Logik.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Grundsätzlich ist es ziemlich einfach, die ToString-Funktion zu überschreiben. Das sieht dann beispielsweise so aus:

    VB.NET-Quellcode

    1. Protected Overrides Function ToString() As String
    2. Return "Hallo Welt"
    3. End Function

    Ansonsten einfach die Vorschläge von den Vorrednern beachten.
    Man könnte auch eine Extension für die List(Of String) schreiben. Nur könnte diese halt nicht die Signatur von ToString haben.

    @nafets3646:
    Dazu müsste man die List(Of T) jedoch ableiten.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @fichz
    Das war mir schon klar, ich wollte nur nochmal erläutern, wie das Überschreiben der Funktion konkret geht und das lässt sich auch einfach auf eine abgeleitete List(Of T) anwenden.
    Okay, ich danke euch!

    Hab das soweit alles verstanden, denke aber das es dann in meinem Fall einfacher wäre, einfach mit einem Indikator zu arbeiten.


    Ich denke allerdings auch, dass ich mir für zukünftige Projekte dann auch mal Tutorials, oder kleine Anleitungen fürs ableiten von Klassen wie der List of String durchlesen werde.


    Sinn und Zweck dieser ganzen Geschichte ist einfach, dass ich die List die ich wieder bekomme zb. so als String ausgegeben haben möchte:

    Test1,Test2,Test3,Test4,etc..


    Das würde als ToString() Funktion ja so ähnlich aussehen:

    VB.NET-Quellcode

    1. Dim sTemp As String = ""
    2. For Each sItem in List
    3. sTemp & = sItem & ","
    4. Next
    5. sTemp = sTemp.Remove(sTemp.Length - 1)
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Schau dir mal die Funktion String.Join() an, damit ist das ganz einfach.

    Und so geht das Ableiten am Beispiel der List(Of String):

    VB.NET-Quellcode

    1. Public Class MyStringList
    2. Inherits List(Of String)
    3. Public Overrides Function ToString() As String
    4. Return String.Format("{{{0}}}", String.Join(", ", Me.ToArray))
    5. End Function
    6. End Class

    Außerdem lassen sich natürlich noch unbegrenzt eigene Funktionen implementieren, das hier zeigt nur die Möglichkeit einer List(Of String) mit eigener ToString-Methode.