Dictionary(Of String, Object) zugriff vereinfachen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Dictionary(Of String, Object) zugriff vereinfachen

    Hallo, ich benötige etwas Hilfe, um den zugriff zu vereinfachen.
    Der String zugriff funktioniert ja so wie er soll.
    Jetzt hab ich mich gefragt, ob man nicht den zugriff über Index vereinfachen könnte.

    VB.NET-Quellcode

    1. (String oder Integer als TKey) nutzen
    2. Public Property Bricklet As New Dictionary(Of String, BrickletTemperature)
    3. '(Dictionary(Of Object, BrickletTemperature))
    4. 'zugriff über Index - Integer
    5. Dim Item As String = con.Temperature.GetUid(0)
    6. Console.WriteLine("Return Temperature: " & con.Temperature.Bricklet(Item).UID)
    7. 'zugriff über String
    8. Console.WriteLine("Return Temperature: " & con.Temperature.Bricklet("UID").UID)
    9. Public Function GetUid(index As Integer) As String Implements IContainer.GetUid
    10. If Bricklet.Count - 1 >= index Then
    11. Try
    12. Dim uid As String = Bricklet.Keys(index).ToString()
    13. Return uid
    14. Catch ex As Exception
    15. Return Nothing
    16. End Try
    17. Else
    18. Return Nothing
    19. End If
    20. End Function

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

    @XZ3RO Zunächst kannst DSu das vereinfachen, indem Du es unterlässt, einen String per ToString() noch mal in einen String zu konvertieren:

    VB.NET-Quellcode

    1. Public Function GetUid(index As Integer) As String Implements IContainer.GetUid
    2. If index >= Bricklet.Count Then
    3. Return Nothing
    4. End If
    5. Return Bricklet.Keys(index)
    6. End Function
    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 verändert das Verhalten. Zuvor wurde bei ungültigem Index Nothing returnt - jetzt wirds eine Exception geben bei negativen Indizees.
    Ich glaub einfachste wäre

    VB.NET-Quellcode

    1. Public Function GetUid(index As Integer) As String Implements IContainer.GetUid
    2. Try
    3. Return Bricklet.Keys(index)
    4. Catch ex As Exception
    5. Return Nothing
    6. End Try
    7. End Function
    Ich würde dann solch einen Konstrukt machen:

    VB.NET-Quellcode

    1. Public Function GetUid(index As Integer) As String Implements IContainer.GetUid
    2. Try
    3. Return Bricklet.Keys(index)
    4. Catch ex As Exception
    5. #If DEBUG Then
    6. Debugger.Break()
    7. #End If
    8. Return Nothing
    9. End Try
    10. End Function
    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!