考虑以下代码:
var url = "www.example.com";
的String.Format:
var targetUrl = string.Format("URL: {0}", url);
字符串插值:
var targetUrl=$"URL: {url}";
字符串插值和string.Format
中的哪一个在性能上更好?
使用它们的最佳方案是什么?
答案 0 :(得分:13)
字符串插值和string.format中的哪一个在性能上更好?
它们都不是更好,因为它们在运行时是相同的。字符串插值由编译器重写为string.Format
,因此两个语句在运行时完全相同。
使用它们的最佳方案是什么?
如果要在字符串格式中使用范围中的变量,请使用字符串插值。字符串插值更安全,因为它对字符串的有效性进行了编译时间检查。如果从外部源(如资源文件或数据库)加载文本,请使用string.Format
。
答案 1 :(得分:0)
在大多数情况下,它们是相同的,但如果您在日志记录声明中使用它们则不会。
如果使用{0}格式,则在日志框架决定是否发出此消息之前,参数不会被转换为字符串。
因此,在log.Debug()调用中,您只输出Info及以上,{myVar}格式始终支付二进制文本税,而{0}格式仅在您实际需要时支付税。
在传递字符串的情况下,它并不重要,但对于二进制数据和浮点数据,它可以产生很大的不同。