9

私は C#.NET でかなり文字列操作を多用するコードを作成していて、少し前に読んだことを思い出した Joel Spolsky の記事に興味を持ちました。

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

では、.NET はどのようにそれを行うのでしょうか? 1文字あたり2バイト?それ以上の Unicode chars^H^H^H^H^H コード ポイントがいくつか必要です。そして、長さはどのようにエンコードされますか?

4

3 に答える 3

17

Jon Skeet が現れる前に、C#の文字列に関する彼の優れたブログへのリンクがあります。

少なくとも現在の実装では、文字列は 20+(n/2)*4 バイト (n/2 の値を切り捨て) を使用します。ここで、n は文字列内の文字数です。文字列型は、オブジェクト自体のサイズが異なるという点で珍しい

于 2009-06-19T16:42:33.923 に答える
11

.NET はUTF-16を使用します。

MSDN の System.Stringから:

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

于 2009-06-19T16:44:52.690 に答える