Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
In viele Fällen ist es halt gerade kein gewurschtel wenn man einfach eine Lambda verwendet. In Verbindung mit LINQ dürfte das wohl das Paradebeispiel sein.
Aber Java funktioniert in der Hinsicht ja prinzipiell anders. Wobei ich das delegate System von C# wesentlich besser finde.
Jup. Besonders LINQ ist hier ein super Beispiel.
Ich habe gerade erst wieder eine Methode aus über 18 Zeilen auf 6 übersichtliche Zeilen verkürzt.
Die Methode aktiviert beim Laden der Anwendung wieder den Radiobutton, den ich beim Verlassen der Anwendung in der Configurationsdatei gespeichert habe.
Vorher habe ich das mit einigen verschachtelten For Each Loops und If-Abfragen gemacht, was auch gut funktioniert hat, aber ich finde mit LINQ ist das Ganze viel besser lesbar, kürzer und sogar schneller. Durch den LINQ Overhead geht zwar etwas Performance bei der Just in Time Compilierung drauf, aber dadurch, dass das die Collection mit dem AsParallel Keyword gekennzeichnet ist wird die Arbeit auf alle CPU Kerne verteilt und das Ganze läuft im Endeffekt wieder schneller ab. Selbst bei so einer kleinen Aufgabe wie dem Vergleich von ein paar Radiobuttons.
Hier der LINQ Code:
Code:
Private Sub RestoreLastPresetSetting()
Dim ret = From ctrl In tloPresets.Controls.AsParallel
Let rbCtrl = TryCast(ctrl, RadioButton)
Where rbCtrl IsNot Nothing
Select rbCtrl.Checked = (rbCtrl.Name = _Configdata.PreviousRadioButton)
End Sub
Und nochmal zum Vergleich die imperative Form in der ich die Methode vorher vorliegen hatte.
Code:
Private Sub RestoreLastPresetSetting()
Dim prevRB As New RadioButton
Dim noMatchingRadioButtonWasFound As Boolean = True
For Each ctrl In tloPresets.Controls
If TypeOf ctrl Is RadioButton Then
Dim rbCtrl = TryCast(ctrl, RadioButton)
If rbCtrl IsNot Nothing Then
prevRB = rbCtrl
If rbCtrl.Name = _Configdata.PreviousRadioButton Then
rbCtrl.Checked = True
noMatchingRadioButtonWasFound = False
Exit For
End If
End If
End If
Next
If noMatchingRadioButtonWasFound AndAlso prevRB IsNot Nothing Then prevRB.Checked = True
End Sub
Ich glaube beim Ersteren Beispiel erkennt man besser was der Code wirklich tut, oder?
Ansichts und sicherlich auch Gewöhnungssache.
Ich kann den C-Style absolut nicht ausstehen. Mit geschweifeten Klammern sähe der Code aber auch nicht großartig anders aus.