Alle Entwickler die Unity verwenden würden nach dieser Aussage vermutlich gerne mal ein Wort mit dir reden^^GTR schrieb:Mono ist was für private Zwecke
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.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
News Java 8 mit Lambda-Expressions veröffentlicht
- Ersteller fethomm
- Erstellt am
- Zur News: Java 8 mit Lambda-Expressions veröffentlicht
BlooDFreeZe
Lt. Commander
- Registriert
- Juli 2006
- Beiträge
- 1.160
Alle Entwickler die Xamarin verwenden auch 

noxon
Admiral
- Registriert
- Sep. 2004
- Beiträge
- 7.570
BlooDFreeZe schrieb: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?