2 Stimmen

Ko/Kontravarianz? Tuple<string, IEnumerable<string>> nicht zufrieden mit List<string>

Ich kann nicht meinen Kopf wickeln, warum ich eine Methode mit dieser Signatur aufrufen kann:

public void Test(Tuple<int, IEnumerable<string>> x);

so:

Test(Tuple.Create(4, new List<string>()))

Ich denke, das hat mit Ko-/Kontravarianz zu tun, aber das ist nur eine Vermutung. Kann jemand seine Klugheit teilen?

4voto

Tim Rogers Punkte 20638

Ja, die Tuple Klasse ist nicht als ko- oder kontravariant gekennzeichnet, da nur Schnittstellen ko- oder kontravariant sein können. Die Typparameter müssen also genau übereinstimmen. Hier ist der Grund, warum Klassen nicht ko- und kontravariant sein können .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X