Где хранятся типы данных .Net? - PullRequest
1 голос
/ 14 мая 2009

Где хранятся типы данных .Net?

Ответы [ 3 ]

7 голосов
/ 14 мая 2009

Если вы имеете в виду «где в памяти хранятся данные - в стеке или в куче», это становится довольно сложным и частично зависит от языка.

Я написал статью об этом , в которой более подробно, чем я хочу повторить здесь. Упрощенные объяснения, такие как часто повторяемые «типы значений живут в стеке, ссылочные типы живут в куче», чрезвычайно ошибочны, с очевидным контрпримером переменной int в ссылочном типе - значение этой переменной всегда будет хранится в куче, хотя int является типом значения.

Тем не менее, вам также было бы целесообразно прочитать сообщение Эрика Липперта в блоге по этому вопросу - это проблема реализации, и разработчики, как правило, слишком беспокоятся об этом. Команда C # может решить изменить все это в более поздней версии и создать новый объект, содержащий все локальные переменные (а не только захваченные).

По общему признанию, это важная деталь реализации - сколько вы кладете в стек, влияет на то, насколько глубоким может быть ваш стек и т. Д., - но мы, вероятно, должны потратить столько времени на одержимость этим.

Если это не , о котором вы предполагали задать вопрос, уточните его. Например, вы могли бы иметь в виду:

  • Где существуют метаданные типа во время выполнения?
  • Где хранятся типы BCL на диске?
  • Где существует JIT-скомпилированный код для типов и хранится ли он?
0 голосов
/ 14 мая 2009

Все основные типы CTS, такие как Int16, Int32, Int64, String, Byte и т. Д., Определены в MSCorLib.dll. Этот файл находится в каталоге C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727.

Все другие типы и классы специального назначения хранятся в соответствующих сборках FCL [Framework Class Library]. Как и все типы, связанные с разработкой форм Windows, находятся в System.Windows.Form. .dll, а все типы, связанные с разработкой web / asp.net, определены в System.Web. .dll. Вы можете найти эти и связанные сборки в GAC локальной машины.

0 голосов
/ 14 мая 2009

Они «хранятся» в различных библиотеках.

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