JetBrains Rider 2025.2 Help

代码检查:使用 UTF-8 字符串字面量

UTF-8 是最常用的字符编码之一,尤其是在互联网上。 然而,在 .NET 中, char字符串 类型使用 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;
最后修改日期: 2025年 9月 26日