C#赢得';t编译开头附近有 的长常量字符串
本文关键字:字符串 常量 开头 赢得 编译 | 更新日期: 2023-09-27 18:29:45
我遇到了一个特殊的情况,在创建某些类型的字符串时会出现以下错误:
写入调试信息时出现意外错误--"调用COM组件时返回错误HRESULT E_FAIL。"
这个错误对于Stack Overflow来说并不新鲜(请参阅这个问题和这个问题),但出现的问题与这个问题无关。
对我来说,当我创建一个特定长度的常量字符串时,就会发生这种情况,该字符串在开头附近的某个地方包含一个空终止字符('0
)。
要复制,首先生成一个适当长度的字符串,例如使用:
var s = new string('a', 3000);
在运行时获取结果字符串(例如,立即窗口或将鼠标悬停在变量上并复制其值)。然后,用它做一个const
:
const string history = "aaaaaa...aaaaa";
最后,在某个地方放一个'0
:
const string history = "aaaaaaaaaaaa'0aa...aaaaa";
我注意到的一些事情:
- 如果将
'0
放在末尾附近,则不会发生错误 - 使用.NET Framework 4.6.1和4.5进行复制
- 如果字符串短,则不会发生
- 编辑:下面的评论中提供了更珍贵的信息
知道为什么会发生这种事吗?是某种虫子吗?
编辑:Bug文件,包括来自评论的信息。谢谢大家。