为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串标记为循环体内的常量

将字符串标记为循环体内的常量

C#
GCT1015 2023-06-25 13:31:38
我有一些带有循环的代码:while(someVariable){    string url = "https://<domain>/<page>/etc..";    var response = await _httpHandler.GetAsync(url);    // do something ...}我想阻止编译器在每次循环迭代时创建新的字符串对象。最好的方法是什么 - 将 url 移到循环之外,或者简单地将 is 标记为 const?(两者之间有区别吗?)
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

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

字符串内部池是一个表,其中包含对应用程序中以编程方式声明或创建的每个唯一文字字符串的单个引用。公共语言运行时 (CLR) 使用实习池来最大限度地减少字符串存储需求。因此,具有特定值的文字字符串实例在系统中仅存在一次。


查看完整回答
反对 回复 2023-06-25
?
DIEA

TA贡献1820条经验 获得超2个赞

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

无论哪种方式,字符串都会被放入字符串池中并重新使用。


查看完整回答
反对 回复 2023-06-25
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信