ReSharper 2026.1 Help

コードインスペクション: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 日