我有一些循环代码:
while(someVariable)
{
string url = "https://<domain>/<page>/etc..";
var response = await _httpHandler.GetAsync(url);
// do something ...
}
我想防止编译器在每次循环迭代时创建新的字符串对象。最好的办法是-将网址移到循环之外,或者简单地将其标记为const? (两者之间有区别吗?)
答案 0 :(得分:1)
别担心。! 编译器不会创建新引用,因为 字符串池 。
字符串实习生池是一个表,其中包含对 在其中以编程方式声明或创建的每个唯一文字字符串 你的申请。公共语言运行库(CLR)使用实习生 池以最小化字符串存储需求。结果,一个实例 具有特定值的文字字符串仅在 系统。
答案 1 :(得分:0)
最简单的方法是将字符串移到循环外。如果启用了优化功能,编译器会自动执行该操作,我不会感到惊讶。
以任何一种方式将字符串放入字符串池和reused anyway。