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