关于 .NET中字符串文字的最新问题引起了我的注意.我知道字符串文字被实习,因此具有相同值的不同字符串引用同一个对象.我也知道字符串可以在运行时实现:
string now = DateTime.Now.ToString().Intern();
Run Code Online (Sandbox Code Playgroud)
显然,在运行时实例化的字符串驻留在堆上,但我假设文字放在程序的数据段中(并且在我对所述问题的回答中这样说).但是我不记得在任何地方看到这个.我认为这是这种情况,因为我是如何做到这一点以及ldstrIL指令用于获取文字并且似乎没有进行分配的事实似乎支持我.
简而言之,字符串文字在哪里?它是在堆上,数据段还是我没想过的某个地方?
编辑:如果字符串文字确实驻留在堆上,它们何时分配?