Я столкнулся с особым случаем, когда я получаю следующую ошибку при создании определенных типов строк:
Непредвиденная ошибка отладки информации об ошибке - "Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента".
Эта ошибка не является новой для (см. этот вопрос и этот вопрос), но представленные проблемы не имеют ничего общего с этим.
Для меня это происходит, когда я создаю строку const определенной длины, которая содержит нуль-завершающий символ (\0
) где-то рядом с началом.
Для воспроизведения сначала создайте строку соответствующей длины, например. с помощью:
var s = new string('a', 3000);
Возьмите результирующую строку во время выполнения (например, "Немедленное окно" или путем зависания переменной и копирования ее значения). Затем сделайте из него const
:
const string history = "aaaaaa...aaaaa";
Наконец, поместите a \0
где-нибудь:
const string history = "aaaaaaaaaaaa\0aa...aaaaa";
Некоторые вещи, которые я заметил:
- если вы положите
\0
ближе к концу, ошибка не произойдет. - Воспроизводится с использованием .NET Framework 4.6.1 и 4.5
- Не получается, если строка короткая.
- Изменить: еще более ценная информация доступна в комментариях ниже.
Любая идея, почему это происходит? Это какая-то ошибка?
Изменить: Ошибка, включая информацию из комментариев. Спасибо всем.