2009-06-19 24 views
7

私はC#.NETでかなり文字列操作を多用するコードを作り、私はしばらく前に読んで思い出したいくつかのジョエル・スポルスキ記事についての好奇心だよ:.NET文字列の内部形式は何ですか?

http://www.joelonsoftware.com/articles/fog0000000319.html
http://www.joelonsoftware.com/articles/Unicode.html

だから、どうしますか。 NETはそれを行う? charごとに2バイト?それ以上のUnicode文字列が必要ですが、いくつかのUnicode文字列があります。H^H^H^H^Hそして長さはどのようにコード化されていますか?

答えて

17

前にJon Skeetが登場する前に、C#で彼のexcellent blog on stringsへのリンクがあります。

少なくとも現在の実装では、文字列内の文字数をnとしたとき、少なくとも20 +(n/2)* 4バイト(n/2の値を四捨五入)をとります。文字列の種類は、オブジェクト自体のサイズが変化する点で珍しいです。

+12

バハマハムバグ。私の言うより多くのことはありません:) –

+4

それはあなたにブログを教えるでしょう! –

+1

実際に私のブログには載っていません。私の記事のサイトにあります。私は何らかの形でrep-sharingスキームを交渉しなければならないと思います。哀れなブロガー/記事ポスター... –

9

.NET UTF-16を使用しています。 System.String on MSDNから

「文字列内の各Unicode文字をユニコードのスカラー値によって定義され、また、UnicodeコードポイントまたはUnicode文字の序数(数値)値と呼ばれる各コードポイントを使用して符号化されます。 UTF-16エンコーディングであり、エンコーディングの各要素の数値はCharオブジェクトで表されます。

関連する問題