字符串插值和string.format中的哪一个在性能上更好?

Ahm*_*nam 9 c# string-formatting string-interpolation c#-6.0

考虑以下代码:

var url = "www.example.com";
Run Code Online (Sandbox Code Playgroud)

的String.Format:

var targetUrl = string.Format("URL: {0}", url);
Run Code Online (Sandbox Code Playgroud)

字符串插值:

var targetUrl=$"URL: {url}";
Run Code Online (Sandbox Code Playgroud)

字符串插值中哪一个string.Format更好,性能更好?

使用它们的最佳方案是什么?

Pat*_*man 15

字符串插值和string.format中的哪一个在性能上更好?

它们都不是更好,因为它们在运行时是相同的.字符串插值由编译器重写string.Format,因此两个语句在运行时完全相同.

使用它们的最佳方案是什么?

如果要在字符串格式中使用范围中的变量,请使用字符串插值.字符串插值更安全,因为它对字符串的有效性进行了编译时间检查.string.Format如果从外部源(如资源文件或数据库)加载文本,请使用此选项.

  • 这不再正确 - 因为 c#10 / .Net-6 插值仅由编译器重写为 string.Format 作为找不到更好方法时的后备。有针对各种实例的优化。请参阅 https://devblogs.microsoft.com/dotnet/string-interpolation-in-c-10-and-net-6/ (2认同)