Announcement

Collapse
No announcement yet.

liste mit struktur wert zuweisen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • liste mit struktur wert zuweisen

    hallo zusammen,


    ich habe ein problem

    wenn ich eine neue Liste erstelle, der ich eine struktur übergebe kann ich nach dem erstellen dieser liste keinen neuen wert mehr zuweisen:

    Code:
    Structure str_test
    
        Dim Spalte As String
        Dim Wert As String
    
    End Structure
    
    dim lst_test As New List(Of str_test)
    dim str as str_test
    
    str.Spalte = "spalte1"
    str.wert = "wert1"
    
    lst_test.add(str)
    das hier funktioniert dann nicht. Es wird mit von der entwicklungsumgebung mitgeteilt, dass der Ausdruck kein Wert (Strukturelement Spalte) ist und es nicht als Ziel einer Zuweisung benutzt werden kann.

    Code:
    For i = 0 To lst_test.Count - 1
    
          lst_test(i).Spalte = "wert_neu"
    
    next
    wie geht es nun, dass ich der spalte in der Schleife einen wert zuweise??

  • #2
    Hallo,

    das geht so:

    In der Struktur müssen Eigenschaften deklariert werden.

    In der Schleife wird eine Instanz der Struktur erstellt und dessen Eigenschaften die Werte zugewiesen.

    Danach wird diese Instanz der Liste hinzugefügt und neuer Schleifendurchlauf begonnen.

    Beispiel:
    [highlight=vb.net]
    Imports System.Collections.Generic

    Namespace ConsoleApplication1
    Public Class Program
    Public Shared Sub Main()
    Dim lst_test As New List(Of str_test)()

    For i As Integer = 0 To 9
    Dim str As New str_test()
    str.Spalte = String.Format("spalte{0}", i)
    str.Wert = String.Format("wert{0}", i)

    lst_test.Add(str)
    Next
    End Sub
    End Class

    Public Structure str_test
    Private _spalte As String
    Public Property Spalte() As String
    Get
    Return _spalte
    End Get
    Set
    _spalte = value
    End Set
    End Property

    Private _wert As String
    Public Property Wert() As String
    Get
    Return _wert
    End Get
    Set
    _wert = value
    End Set
    End Property
    End Structure
    End Namespace
    [/highlight]

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      ja danke eine sehr gute idee.

      allerdings nicht ganz das was ich wollte.

      ich will ja der Struktur erster einem Element der Struktur einen neuen wert zuweisen, nachdem sie schon in der liste mit Add steht und nicht davor.

      Das hat ja auch schon vorher geklappt.

      Comment


      • #4
        Hallo,

        verwende statt der Struktur ein Klasse. D.h. statt Structure schreibe Class -> dann gehts.

        Der Grund ist dass Strukturen Werttypen sind und Klassen Verweistypen.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          stimmt das funktioniert.


          das ist mal eine komsiche sache.

          weißt du warum man einer struktur nix mehr übergeben kann, wenn sie in einer liste drin ist.

          ich habe es mal noch mit einer arraylist probiert, aber da war das gleiche problem wie bei der list

          Comment


          • #6
            Die MSDN sagt dazu:
            Es wurde der Versuch unternommen, einen Werttyp zu ändern, der das Ergebnis eines Zwischenausdrucks ist. Da der Wert nicht beibehalten wird, bleibt er unverändert.

            Um diesen Fehler zu beheben, speichern Sie das Ergebnis des Ausdrucks in einem Zwischenwert oder benutzen einen Referenztyp für den Zwischenausdruck.
            der Referenztyp ist eine Klasse. Mit Strukturen geht es also nicht.

            Strukturen würde ich nur für "kleine" Einheiten verwenden, wie zB einen Punkt bei nur die x- und y-Koordinate gespeichert wird.

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              komisch is aber, dass .NET total viele Strukturen benutzt...

              Comment


              • #8
                @levu: Dann probiers und schau ob es bei dir läuft! Komisch ha?
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  ich meine das als antowrt darauf, dass strukturen sparsam verwendet werden sollten!
                  Strukturen würde ich nur für "kleine" Einheiten verwenden...

                  Comment


                  • #10
                    Originally posted by levu View Post
                    komisch is aber, dass .NET total viele Strukturen benutzt...
                    Bei deinen Kurzantworten kann sich ja keiner auskennen. Solltest du so wenig Zeit haben spar dir deine Kommentare.
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment


                    • #11
                      wenns aber nicht mehr zu sagen gibt? (is ja gut, ich habe wirklich relativ knapp geschrieben)

                      Comment

                      Working...
                      X