Hallo zusammen,
ich bin normalerweise in der Java-welt unterwegs, aber jetzt hab ich doch mal wieder ein C# Projekt bekommen.
Aus Java kenne ich die Möglichkeit ein Interface zu instanzieren ohne eine konkrete Klasse zu verwenden und zwar so:
public interface MyInterfcae
{
void myMethod();
}
MyInterface object = new MyInterface()
{
public void myMethod()
{
...
}
};
Wie bekomme ich das auch in C# hin?
Danke und viele Grüße,
Du kannst eine Schnittstelle nicht direkt instanzieren. Wieso willst du das den überhaupt tun?
Weil es manchmal ganz nützlich ist. In Java z.b. für Listenerhandling.
Ich denke, du willst auf eine Anonyme Klasse hinaus, die gleichzeitig ein Interface implementiert - was es in C# nicht gibt.
Weil du allerdings von Listenern sprichst; die werden in C# nicht über Klassen/Interfaces gelöst, sondern per Event/Delegate - und die kannst du wiederum anonym (zb. als Lambda-Expression) definieren wie in deinem Beispiel.
@Foermchen82: wie BhaaL schon gesagt hat, das ist eine anonyme Klasse. Interfaces kannst du nicht instanziieren. Auch in Java ist eigentlich nur ein recht hässlicher Hack, weil es in Java keine Funktionen höherer Ordnung gibt.
Über Sinn und Unsinn der Möglichkeit ein Interface direkt zu instanzieren möchte ich jetzt nicht philosophieren.
Mir ging es erstmal nur darum, ob es auch möglich ist.
Aber dem ist wohl nicht so.
danke für die Antworten
Mir gings auch mehr um die Aussage "Interface instanziieren". Das macht überhaupt keinen Sinn und geht auch in Java nicht.