Какова реализация универсальных шаблонов для среды CLR

Когда вы используете общие коллекции в C # (или .NET в целом), делает ли компилятор в основном ту работу, которую обычно приходилось делать разработчикам по созданию общей коллекции для определенного типа. Так что в основном. . . это просто экономит нам работу?

Теперь, когда я думаю об этом, это не может быть правдой. Потому что без дженериков нам приходилось создавать коллекции, в которых использовался неуниверсальный массив внутри, поэтому была упаковка и распаковка (если это была коллекция типов значений) и т. Д.

Итак, как дженерики отображаются в CIL? Что он делает для имплементации, когда мы говорим, что хотим общую коллекцию чего-то? Мне не обязательно нужны примеры кода CIL (хотя это было бы нормально), Я хочу знать концепции того, как компилятор берет наши общие коллекции и отображает их.

Спасибо!

PS Я знаю, что могу использовать ildasm, чтобы посмотреть на это, но мой CIL все еще выглядит как китайский, и я я не готов взяться за это. Мне просто нужны концепции того, как C # (и другие языки, я думаю, тоже) обрабатываются в CIL для обработки дженериков.

13
задан Shiv Kumar 24 February 2011 в 03:46
поделиться