コードインスペクション:UTF-8 文字列リテラルを使用する
UTF-8 は、特にインターネットで最もよく使用される文字エンコーディングの 1 つです。 ただし、.NET では、 char 型と string 型は UTF-16 を使用して値を表します。 そのため、文字列の UTF-8 表現を取得するには、実行時に変換を行う System.Text.Encoding.UTF8.GetBytes() を呼び出すなどの追加の手順が必要になります。 この実行時のコストを回避するために、一部の開発者は、次のように、事前にエンコーディングを実行し、出力バイト配列をソースコードに組み込むことを選択する場合があります。
// "HTTP/1.1 "
private static ReadOnlySpan<byte> HttpVersion11Bytes =>
new byte[] { 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20 };
C# 11 は、実行時のオーバーヘッドなしでソースコードに新しい UTF-8 文字列を表現するより簡単な方法を導入します。
// Notice the 'u8' suffix after the string literal
private static ReadOnlySpan<byte> HttpVersion11Bytes => "HTTP/1.1 "u8;
このインスペクションは、UTF-8 文字列を表現する既存の方法を認識し、それを新しい言語機能に置き換えて、コードの読みやすさを向上させるのに役立ちます。
また、文字列リテラルでの Encoding.Utf8.GetBytes() の使用を検出し、新しい UTF-8 文字列リテラルに変換できます。 これにより、読みやすさが向上するだけでなく、実行時のエンコードが不要になるため、パフォーマンスも向上します。
private static ReadOnlySpan<byte> HttpVersion11Bytes =>
Encoding.UTF8.GetBytes("HTTP/1.1 ");
private static ReadOnlySpan<byte> HttpVersion11Bytes =>
"HTTP/1.1 "u8;
2026 年 6 月 12 日