Co / контрвариация?Кортежне удовлетворен списком <string> - PullRequest
2 голосов
/ 22 июня 2011

Я не могу понять, почему я не могу вызвать метод с такой подписью:

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

вот так:

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

Я думаю, что это связано с ко / контравариантностью, но это только предположение. Может кто-нибудь поделиться своим умом?

1 Ответ

4 голосов
/ 22 июня 2011

Да, класс Tuple не помечен как ко- или контравариантный, потому что только интерфейсы могут быть ко-или контравариантными. Таким образом, параметры типа должны точно соответствовать. Вот причина, по которой классы не могут быть одновременно и контравариантными .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...