VB.Net Zugriff auf Structure innerhalb eines Dictionaries
Hallo zusammen,
ich bin gerade eben über etwas gestolpert von dem ich mal einen Beispielcode verfasst habe:
Zeile 14 und 15 kompilieren nicht mit der angegebenen Fehlermeldung was mich an sich schon sehr verwundert weil IntelliSense bspw. problemlos erkennt das ich gern auf ein Objekt vom Typ SomeStructure zugreifen möchte und mir die vorhandenen Variablen anbietet.
Zeile 17 und 18 funktionieren problemlos führen aber nicht zum Ziel da Versuch1 nur eine Kopie ist
Zeile 22-24 verhalten sich genau wie gewünscht, empfinde ich persönlich aber als unschön und vermute auch performanceverluste hier
Wenn ich aus der Structure eine Class mache funktioniert alles genau wie gewünscht.
Meine Frage ist ob ich Tomaten auf den Augen habe und es mein Fehler ist das vor allem Zeile 14 und 15 nicht funktionieren oder ob es tatsächlich by Design ist. Ich könnte schwören ich habe in früheren Projekten nämlich genau so programmiert. Seltsam
Bonusfrage:
Kann mir jemand einen vernünftigen Grund nennen wieso es hier keine Kategorie .Net oder wenigstens VisualBasic gibt? Dafür aber Kategorien wie KiXtart, Entwicklung:Lizenzierung und ähnlich wichtige Dinge...
Grüße
ich bin gerade eben über etwas gestolpert von dem ich mal einen Beispielcode verfasst habe:
Public Structure SomeStructure
Dim ID As Integer
End Structure
Private Sub DoSomething()
Dim Dict As New Dictionary(Of String, SomeStructure)
Dim aStructure As New SomeStructure With {.ID = 1}
Dict.Add("key", aStructure)
'Dict("key").ID = 2 'Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden.
'Dict.Item("key").ID = 2 'Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden.
Dim Versuch1 As SomeStructure = Dict("key")
Versuch1.ID = 2
System.Diagnostics.Debug.Print(Dict("key").ID) 'Output 1
Dim Versuch2 As SomeStructure = Dict("key")
Versuch2.ID = 2
Dict("key") = Versuch2
System.Diagnostics.Debug.Print(Dict("key").ID) 'Output 2
End Sub
Zeile 14 und 15 kompilieren nicht mit der angegebenen Fehlermeldung was mich an sich schon sehr verwundert weil IntelliSense bspw. problemlos erkennt das ich gern auf ein Objekt vom Typ SomeStructure zugreifen möchte und mir die vorhandenen Variablen anbietet.
Zeile 17 und 18 funktionieren problemlos führen aber nicht zum Ziel da Versuch1 nur eine Kopie ist
Zeile 22-24 verhalten sich genau wie gewünscht, empfinde ich persönlich aber als unschön und vermute auch performanceverluste hier
Wenn ich aus der Structure eine Class mache funktioniert alles genau wie gewünscht.
Meine Frage ist ob ich Tomaten auf den Augen habe und es mein Fehler ist das vor allem Zeile 14 und 15 nicht funktionieren oder ob es tatsächlich by Design ist. Ich könnte schwören ich habe in früheren Projekten nämlich genau so programmiert. Seltsam
Bonusfrage:
Kann mir jemand einen vernünftigen Grund nennen wieso es hier keine Kategorie .Net oder wenigstens VisualBasic gibt? Dafür aber Kategorien wie KiXtart, Entwicklung:Lizenzierung und ähnlich wichtige Dinge...
Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264519
Url: https://administrator.de/contentid/264519
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
lg,
Slainte
by Design
Genau das.Bonusfrage:
Kann mir jemand einen vernünftigen Grund nennen wieso es hier keine Kategorie .Net oder wenigstens VisualBasic gibt? Dafür aber Kategorien wie KiXtart,
Entwicklung:Lizenzierung und ähnlich wichtige Dinge...
Das liegt wahrscheinlich daran das das hier ein Forum für Adminstratoren ist und nicht für Programmierer/Entwickler (ja ich weis das Admins in KMUs meist auch Entwickler sind )Kann mir jemand einen vernünftigen Grund nennen wieso es hier keine Kategorie .Net oder wenigstens VisualBasic gibt? Dafür aber Kategorien wie KiXtart,
Entwicklung:Lizenzierung und ähnlich wichtige Dinge...
lg,
Slainte
Moin,
eine Structure ist vom Typ value type deswegen klappt die Zuweisung so nicht weil immer nur Kopien einer Structure übergeben werden, siehe auch:
http://stackoverflow.com/questions/7126318/how-do-you-assign-values-to- ...
Gruß jodel32
eine Structure ist vom Typ value type deswegen klappt die Zuweisung so nicht weil immer nur Kopien einer Structure übergeben werden, siehe auch:
http://stackoverflow.com/questions/7126318/how-do-you-assign-values-to- ...
Gruß jodel32
Das sollte klar sein wenn du das hier ließt:
https://msdn.microsoft.com/de-de/library/s1ax56ch.aspx
https://msdn.microsoft.com/de-de/library/s1ax56ch.aspx