Welches interne Format hat eine .NET String?

7

Ich mache in C # .NET ziemlich viel String-Manipulations-intensiven Code und bin neugierig auf einige Artikel von Joel Spolsky, die ich vor einiger Zeit gelesen habe:

Ссылка
Ссылка

Also, wie macht es .NET? Zwei Bytes pro Zeichen? Es gibt einige Unicode-Zeichen ^ H ^ H ^ H ^ H ^ H Codepunkte, die mehr brauchen. Und wie ist die Länge codiert?

    
JCCyC 19.06.2009, 16:40
quelle

2 Antworten

17

Bevor Jon Skeet hier auftaucht, gibt es einen Link zu seinem exzellenten Blog über Strings in C #.

>
  

In der aktuellen Implementierung nehmen die Strings mindestens 20 (n / 2) * 4 Bytes (Rundung des Werts von n / 2 ab), wobei n die Anzahl der Zeichen in der Zeichenfolge ist. Der String-Typ ist ungewöhnlich, da die Größe des Objekts selbst variiert

    
Johnno Nolan 19.06.2009, 16:42
quelle
9

.NET verwendet UTF-16 .

Von System.String auf MSDN :

"Jedes Unicode-Zeichen in einer Zeichenfolge wird durch einen Unicode-Skalarwert definiert, der auch als Unicode-Codepunkt oder als ordinaler (numerischer) Wert des Unicode-Zeichens bezeichnet wird. Jeder Codepunkt wird mit UTF-16-Codierung und numerisch codiert Der Wert jedes Elements der Codierung wird durch ein Char-Objekt dargestellt. "

    
Reed Copsey 19.06.2009 16:44
quelle

Tags und Links