Entspricht C # der strukturellen Typisierung von Scala?

n Scala kann ich @ definierStrukturtypen wie folgt

type Pressable = { def press(): Unit }

Dies bedeutet, dass ich eine Funktion oder Methode definieren kann, die als Argument etwas verwendet, das Pressable ist, wie folgt:

def foo(i: Pressable) { // etc.

Das Objekt, das ich an diese Funktion übergebe, muss über eine Methode namens press () verfügen, die mit der im Typ definierten Typensignatur übereinstimmt. Es werden keine Argumente verwendet, und es wird Unit (Scalas Version von void) zurückgegeben.

Ich kann sogar den Strukturtyp inline verwenden:

def foo(i: { def press(): Unit }) { // etc.

Es ermöglicht dem Programmierer im Grunde, alle Vorteile des Duck-Typings zu nutzen, während er dennoch den Vorteil der Typprüfung zur Kompilierungszeit hat.

Hat C # etwas ähnliches? Ich habe gegoogelt, kann aber nichts finden, aber ich kenne C # in keiner Tiefe. Wenn nicht, gibt es Pläne, dies hinzuzufügen?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage