マネージドコードのみの場合はほとんど使うことはありませんが、Stringコンストラクタではcharのポインタやsbyteのポインタから文字列を作成することも出来ます。
charポインタ・sbyteポインタから文字列を作成する
using System;
using System.Text;
class Sample {
static void Main()
{
byte[] data;
string s;
// 文字列を構成するbyte配列
data = new byte[] {0x41, 0x42, 0x43};
unsafe {
fixed (byte* d = data) {
// byteポインタをsbyteポインタにキャストして文字列を作成する
s = new string((sbyte*)d, 0, 3);
}
}
Console.WriteLine(s);
data = new byte[] {0x93, 0xfa, 0x96, 0x7b, 0x8c, 0xea};
unsafe {
fixed (byte* d = data) {
// sbyteポインタから文字列を作成する (文字コードをshift_jisとして解釈する)
s = new string((sbyte*)d, 0, 6, Encoding.GetEncoding("shift_jis"));
}
}
Console.WriteLine(s);
}
}
実行結果
ABC 日本語