captmcneil
Ensign
- Registriert
- Juni 2005
- Beiträge
- 189
Hallo zusammen,
Ich komme aus der Java-Ecke, und bin schon längers am Suchen, ob es eine Möglichkeit gibt, in C#/VB.Net sowas wie anonyme Implementierungen vorzunehmen.
In diesem Zusammenhang lese ich oft etwas von delegates und Lambda-Expressions, allerdings weiß ich nicht, wie ich soetwas damit hinbekomme.
Ein Beispiel in Java:
Ich habe eine Liste mit Objekten, die ich sortieren möchte. Dafür benutze ich einen Comparator, den es ja genauso in .NET gibt.
Nutze ich den Comparator nur an dieser Stelle, wäre es etwas umständlich, eine Inner-Class zu deklarieren die das Interface implementiert. In Java geht das ganz schick mit anonymen Typen. Statt
kann man einfach
schreiben.
Das ganze ist natürlich nicht wirklich essenziell. Trotzdem: geht sowas in C#? Ein einfaches "Nein" würde mir schon sehr weiterhelfen, weil ich dann nicht weiter suchen muss.
Ich komme aus der Java-Ecke, und bin schon längers am Suchen, ob es eine Möglichkeit gibt, in C#/VB.Net sowas wie anonyme Implementierungen vorzunehmen.
In diesem Zusammenhang lese ich oft etwas von delegates und Lambda-Expressions, allerdings weiß ich nicht, wie ich soetwas damit hinbekomme.
Ein Beispiel in Java:
Ich habe eine Liste mit Objekten, die ich sortieren möchte. Dafür benutze ich einen Comparator, den es ja genauso in .NET gibt.
Nutze ich den Comparator nur an dieser Stelle, wäre es etwas umständlich, eine Inner-Class zu deklarieren die das Interface implementiert. In Java geht das ganz schick mit anonymen Typen. Statt
PHP:
private class MyComparator implements Comparator<MyClass> {
public int compare(MyClass o1, MyClass o2) {
return 0;
}
}
....
Comparator theComparator = new MyComparator();
List<MyClass> theList = ...;
Collections.sort(theList, theComparator);
PHP:
List<MyClass> theList = ...;
Collections.sort(
theList,
new Comparator<MyClass>() {
public int compare(MyClass o1, MyClass o2) {
return 0; // implementierung hier
}
}
);
schreiben.
Das ganze ist natürlich nicht wirklich essenziell. Trotzdem: geht sowas in C#? Ein einfaches "Nein" würde mir schon sehr weiterhelfen, weil ich dann nicht weiter suchen muss.
Zuletzt bearbeitet: