Laden...

Interface instantiieren, ohne eine konkrete Klasse zu verwenden (sondern eine anonyme Klasse)

Erstellt von Foermchen82 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.935 Views
F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 12 Jahren
Interface instantiieren, ohne eine konkrete Klasse zu verwenden (sondern eine anonyme Klasse)

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,

B
198 Beiträge seit 2005
vor 12 Jahren

Du kannst eine Schnittstelle nicht direkt instanzieren. Wieso willst du das den überhaupt tun?

F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 12 Jahren

Weil es manchmal ganz nützlich ist. In Java z.b. für Listenerhandling.

656 Beiträge seit 2008
vor 12 Jahren

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.

C
1.214 Beiträge seit 2006
vor 12 Jahren

@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.

F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 12 Jahren

Ü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

C
1.214 Beiträge seit 2006
vor 12 Jahren

Mir gings auch mehr um die Aussage "Interface instanziieren". Das macht überhaupt keinen Sinn und geht auch in Java nicht.