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

时间:2016-06-23 07:33:47

标签: c# string-formatting c#-6.0 string-interpolation

考虑以下代码:

var url = "www.example.com";

的String.Format:

var targetUrl = string.Format("URL: {0}", url);

字符串插值:

var targetUrl=$"URL: {url}";

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

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

2 个答案:

答案 0 :(得分:13)

  

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

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

  

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

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

答案 1 :(得分:0)

在大多数情况下,它们是相同的,但如果您在日志记录声明中使用它们则不会。

如果使用{0}格式,则在日志框架决定是否发出此消息之前,参数不会被转换为字符串。

因此,在log.Debug()调用中,您只输出Info及以上,{myVar}格式始终支付二进制文本税,而{0}格式仅在您实际需要时支付税。

在传递字符串的情况下,它并不重要,但对于二进制数据和浮点数据,它可以产生很大的不同。