2009-06-19 3 views
7

나는 C# .NET에서 꽤 문자열 조작 집약적 인 코드를 만들고 난 다시 잠시를 읽고 기억 일부 Spolsky 조엘 기사에 대한 호기심을 가지고있어 :.NET String의 내부 형식은 무엇입니까?

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

그래서, 어떻게하는지. NET 할거야? char 당 2 바이트? 그 이상의 것을 필요로하는 Unicode charsH^H^H^H^H 코드 포인트가 있습니다. 길이는 어떻게 인코딩됩니까?

답변

17

Jon Skeet이 등장하기 전에 C#에서 그의 excellent blog on strings에 대한 링크가 있습니다.

적어도 현재의 구현에서 문자열은 20+ (n/2) * 4 바이트 (n/2 값 반올림)를 차지합니다. 여기서 n은 문자열의 문자 수입니다. 개체 자체의 크기가 달라지기 때문에 문자열 형식이 비정상적입니다.

+12

Bah humbug. 나에게 더 많이 말하기 위해, 정말로 :) –

+4

그것은 당신에게 blog를 가르쳐 줄 것이다! –

+1

사실 내 블로그에 없다. 내 기사 사이트에있다. 나는 일종의 rep-sharing scheme을 협상해야한다고 생각한다. 동정 불쌍한 블로거/기사 포스터 ... –

9

.NET 사용 언어는 UTF-16입니다. System.String on MSDN 가입일

:

"문자열의 각 유니 코드 문자는 유니 스칼라 값으로 정의되고, 또한 유니 코드 코드 포인트 또는 유니 코드 문자의 서수 (수치) 값이라고 각 코드 포인트를 사용하여 인코딩된다. UTF-16 인코딩 및 인코딩의 각 요소의 숫자 값은 Char 개체로 표시됩니다. "

관련 문제