Константы, на которые ссылается код, заменяются их фактическими значениями при компиляции в IL.
Поскольку на общедоступные константы можно ссылаться в коде за пределами конкретной сборки, имеет смысл хранить их в метаданных сборки.
Но почему там хранятся приватные константы? Нет ссылок на эти константы в IL кода в сборке, которая их определила, и они не доступны для ссылок за пределами сборки.
Итак, что нужно для доступа к этим значениям после компиляции кода?
Мне кажется, что все константы в сборках должны быть публичными, а приватные константы должны быть функцией уровня языка, которая просто заставляет компилятор выдавать литеральные значения.
private const string MYCONST = "Hello World"
и последующее выполнениеConsole.WriteLine(MYCONST)
приводит к тому же IL, что и выполнениеConsole.WriteLine("Hello World")
. - person user2465452   schedule 08.11.2014