Mam następujący kod:Dlaczego string.Normalize nie jest spójny w zależności od kontekstu?
string input = "ç";
string normalized = input.Normalize(NormalizationForm.FormD);
char[] chars = normalized.ToCharArray();
buduję ten kod z Visual Studio 2010, .net4, na 64 bitowych Windows 7.
go uruchomić w projekcie testów jednostkowych (platformy: Dowolny CPU) w dwóch kontekstach i sprawdzić zawartość chars
:
- wizualne testów jednostkowych Studio: znaków zawierający
{ 231 }
. - ReSharper: znaki zawierają
{ 231 }
. - NCrunch: znaki zawierają numer
{ 99, 807 }
.
W msdn documentation, nie mogłem znaleźć żadnych informacji prezentujących różne zachowania.
Dlaczego więc dostaję różne zachowania? Dla mnie zachowanie NCrunch jest oczekiwane, ale oczekiwałbym tego samego u innych.
Edytuj: Powróciłem do .Net 3.5 i nadal mam ten sam problem.
Hmm, dostaję {99, 807} z Visual Studio ... To by sugerowało, że jest coś w konfiguracji twojego projektu ... Może. – zmilojko
@zmilojko. Dziękuję za twoje testy. Otrzymuję takie same wyniki jak twoje w pustym nowym projekcie. Sprawdzam więc różnice między dwoma projektami (winmerge na csproj), ale nie mogłem jeszcze znaleźć, co było powodem, dla którego napisałem to pytanie: zrozum, który kontekst może wywołać inne zachowanie. – remio
Co to jest "Thread.CurrentThread.CurrentCulture" w każdym przypadku? – AakashM