J'ai couru dans un cas particulier où j'obtiens l'erreur suivante lors de la création de certains types de chaîne:
Erreur inattendue lors de l'écriture des informations de débogage -- 'Erreur HRESULT E_FAIL a été renvoyé à partir d'un appel à un composant COM.'
Cette erreur n'en est pas à Débordement de Pile (voir à cette question, et cette question), mais les problèmes présentés n'ont rien à voir avec celui-ci.
Pour moi, ce qui se passe quand je crée un const string d'une certaine longueur qui comprend un null-caractère de terminaison (\0
) quelque part près du début.
De reproduire, d'abord générer une chaîne de caractères de longueur appropriée, par exemple à l'aide de:
var s = new string('a', 3000);
Saisir la chaîne résultante à l'exécution (par exemple Immédiate de la Fenêtre ou en passant la souris sur la variable et la copie de sa valeur). Ensuite, faire une const
hors de lui:
const string history = "aaaaaa...aaaaa";
Enfin, mettre un \0
quelque part:
const string history = "aaaaaaaaaaaa\0aa...aaaaa";
Certaines choses que j'ai remarqué:
- si vous mettez l'
\0
près de la fin, l'erreur ne se produise pas. - Reproduit à l'aide .NET Framework 4.6.1 et 4.5
- Ne se produit pas si la chaîne est courte.
- Edit: d'autant plus précieuse d'informations disponibles dans les commentaires ci-dessous.
Une idée de pourquoi ce qui se passe? Est-ce un genre de bug?
Edit: Bug déposée, y compris des infos dans les commentaires. Merci tout le monde.