NullReferenceException in arrays/list

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

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

    NullReferenceException in arrays/list

    Hallo,

    Ich habe bekomme eine NullReferenceException wenn ich ein array in einer for schleife befülle.

    Das array kommt enthält objekte der Klasse subject

    VB.NET-Quellcode

    1. Public Class subject
    2. Public Property SubjectId As String
    3. Public Property SubjectName As String
    4. Public Property TeacherName As String
    5. Public Property TeacherMail As String
    6. Public Sub New(ByVal NewSubjectId As String, ByVal NewSubjectName As String, ByVal NewTeacherName As String, ByVal NewTeacherMail As String)
    7. SubjectId = NewSubjectId
    8. SubjectName = NewSubjectName
    9. NewTeacherName = NewTeacherName
    10. TeacherMail = NewTeacherMail
    11. End Sub
    12. End Class


    Wenn ich diese XML-Datei:

    XML-Quellcode

    1. <xml version="1.0" encoding="utf-8" standalone="yes">
    2. <SchoolData>
    3. <subjects>
    4. <subject>
    5. <subjectid>1</subjectid>
    6. <subjectname>test</subjectname>
    7. <teachername>Frau Muster</teachername>
    8. <teachermail>muster@max.de</teachermail>
    9. </subject>
    10. <subject>
    11. <subjectid>2</subjectid>
    12. <subjectname>test2</subjectname>
    13. <teachername>Herr Max</teachername>
    14. <teachermail>max@muster.de</teachermail>
    15. </subject>
    16. </subjects>
    17. </SchoolData>
    18. </xml>

    einlese,mit diesem Programm:

    VB.NET-Quellcode

    1. Dim doc As XElement = XElement.Load("data.xml")
    2. Dim xsubjects As IEnumerable(Of XElement) = doc.Elements()
    3. Dim i As Integer = 0
    4. For Each xsubject In xsubjects
    5. subjects(i) = New subject(xsubject.Element("subjectid").Value,
    6. xsubject.Element("subjectname").Value,
    7. xsubject.Element("teachername").Value,
    8. xsubject.Element("teachermail").Value)
    9. i = i + 1
    10. Next xsubject

    bekomme ich bei

    Quellcode

    1. subject(i) = New subject(
    ... die Execption.

    Bisher konnte ich alle meine NullReferenceExceptions beseitigen, da ich ein mal ein New vergessen ahtte oder etwas anderes, aber bei dieser bin ich mit meinem Latein am Ende.
    Ich habe die letzen zwei Tage versuch die Exeption zu beseitigen aber jetzt kann ich den Code langsam nicht mehr sehen.
    Ich habe mit hoher warscheinlichkeit irgendwas vergessen oder falsch geschrieben nur ich sehs einfach nicht.
    Ach ja etwas anderes als array/list (hab ich am Anfang gehabt) funktioniert meines Wissens nach nicht da es eine UW-APP (UWP) ist.

    Falls ihr das Schema der xml Datei braucht oder etwas anderes bitte bescheid sagen.

    Ich hoffe ihr könnt mir helfen

    Mit freundlichen Grüßen
    Freeek3
    Es gibt für alles eine Lösung auch für dein Problem schreib einfach einen Thread aber bitte keine PNs die beantworte ich sowieso nicht ;) :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Freeek3“ ()

    Freeek3 schrieb:

    VB.NET-Quellcode

    1. subjects(i) = New subject(xsubject.Element("subjectid").Value,
    Diese Zeile compiliert bei mir nicht.
    Was muss da tatsächlich stehen?
    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!
    Wo wird subjects Deklariert/instanziert? Übersehe ich da was?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo,

    @RodofGermany vielleicht so?:

    VB.NET-Quellcode

    1. subjects(i) = New subject(xsubject.Element("subjectid").Value, xsubject.Element("subjectname").Value, xsubject.Element("teachername").Value,xsubject.Element("teachermail").Value)

    Diese Zeiele löst bei mir die Exeption aus. Nicht nur die erste, habe sie zur besseren Lesbarkeit getrennt Visual Studio aht auch nicht rumgemeckert.

    @mrMo das habe ich tatsächlich vergessen. Hier:

    VB.NET-Quellcode

    1. Public subjects() As subject


    @Mokki Das könnte natürlich sein, ich sehs aber nicht.
    Es gibt für alles eine Lösung auch für dein Problem schreib einfach einen Thread aber bitte keine PNs die beantworte ich sowieso nicht ;) :!:
    @Freeek3 im Code vergessen oder vergessen zu posten? Falls ersteres, läuft dein Programm denn jetzt sauber?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    vergessen zu posten und nein tut es nicht :(
    Es gibt für alles eine Lösung auch für dein Problem schreib einfach einen Thread aber bitte keine PNs die beantworte ich sowieso nicht ;) :!:
    Die hier schmeißen dir die Exception. Tippe die XML wird nicht gescheit geladen bzw. ausgewertet(?).

    VB.NET-Quellcode

    1. xsubject.Element("subjectid").Value
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen