OOP - Zahlenarray

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von cemetry.

    OOP - Zahlenarray

    Hallo Leute,

    ich steh gerade auf dem Schlauch. Ich will ein Zahlenarray Objektorientiert erstellen, nur funktioniert das leider nicht so wie gewünscht.
    Ich weiß, dass das auch kürzer mittels einer Function geht, nur möchte ich mich mit Linq und OOP beschäftigen, daher bitte ich um eine Antwort, die mir erklärt warum das so nicht funktioniert.

    Das wäre mein Code. Als Endergebnis bekomme ich den "null Exception":

    VB.NET-Quellcode

    1. Class MainWindow
    2. Private Sub bt1_Click(sender As Object, e As RoutedEventArgs) Handles bt1.Click
    3. Dim Zahlen As New Zahlengenerator With {.Startzahl = 1, .Endzahl = 100}
    4. Dim Zahlenliste = Zahlen.ZahlenlisteGenerieren()
    5. For Each fi In Zahlenliste
    6. lb1.Items.Add(fi)
    7. Next
    8. End Sub
    9. End Class
    10. Public Class Zahlengenerator
    11. Private Zahlenliste As IList
    12. Public Startzahl As Integer
    13. Public Endzahl As Integer
    14. Private Property ZahlenlisteErstellen() As IList
    15. Get
    16. Return Zahlenliste
    17. End Get
    18. Set(value As IList)
    19. For x As Integer = Startzahl To Endzahl
    20. Zahlenliste.Add(x)
    21. Next
    22. End Set
    23. End Property
    24. Public Function ZahlenlisteGenerieren() As IList
    25. Dim Zahlenliste As IList = ZahlenlisteErstellen
    26. Return Zahlenliste
    27. End Function
    28. End Class


    Für mich macht es den Anschein, dass das irgendwas mit dem Setter zu tun hat.
    Ich bin auf jedenfall schon auf Eure Antworten gespannt! Ich hab damit tatsächlich bis um 3 Uhr morgens gespielt.


    Vielen Dank und Gruß cemetry
    Moin,

    Du weist der Variable Zahlenliste auch nirgends eine Instanz einer Klasse zu, die das IList-Interface implementiert, was in einer NullReferenceException endet.
    Außerdem solltest Du Algorithmen bzw. Vorgänge immer in Functions erledigen und nie in Properties und dann in einer extra Function deren Wert zurückgeben, das macht man normal so nicht.
    Außerdem ist das nicht generisch, was Du ändern solltest. => IList(Of Integer)

    @WhitePage Jein, ein Interface hat keinen Konstruktor, ist ja logisch, weil es ja nur Schnittstellen sind. Er muss halt ein Objekt einer Klasse, die dieses Interface implementiert (z. B. List(Of Integer)), zuweisen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Willkommen um Forum. :thumbup:

    cemetry schrieb:

    Als Endergebnis bekomme ich den "null Exception"
    In welcher Zeile Deines Codes?
    oder gleich dies.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das ging ja schnell!

    @RushDen: Mir ist es klar, dass das eigentlich Nonsense ist, was ich da tue, aber ich übe halt gern mit einfachen Dingen. OOP hatten wir in dieser Form in meiner Weiterbildung als Betriebsinformatiker hwk leider noch nicht. Kommt noch ;)
    An den Bruchrechner werde ich mich jetzt aber gleich werfen.

    @RodFromGermany: Werd ich mir merken! War mein erster Beitrag, da kann das schon vorkommen.

    @Trade: Ich habe mir deinen Rat zu Herzen genommen und eine Function als iList(of integer) erstellt. Funktioniert tadellos.

    Besten Dank!