在循环体内将字符串标记为const

时间:2019-07-15 13:03:46

标签: c# string

我有一些循环代码:

while(someVariable)
{
    string url = "https://<domain>/<page>/etc..";
    var response = await _httpHandler.GetAsync(url);
    // do something ...
}

我想防止编译器在每次循环迭代时创建新的字符串对象。最好的办法是-将网址移到循环之外,或者简单地将其标记为const? (两者之间有区别吗?)

2 个答案:

答案 0 :(得分:1)

别担心。! 编译器不会创建新引用,因为 字符串池

  

字符串实习生池是一个表,其中包含对   在其中以编程方式声明或创建的每个唯一文字字符串   你的申请。公共语言运行库(CLR)使用实习生   池以最小化字符串存储需求。结果,一个实例   具有特定值的文字字符串仅在   系统。

答案 1 :(得分:0)

最简单的方法是将字符串移到循环外。如果启用了优化功能,编译器会自动执行该操作,我不会感到惊讶。

以任何一种方式将字符串放入字符串池和reused anyway

相关问题