簡體   English   中英

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

[英]Which of one from string interpolation and string.format is better in performance?

考慮這個代碼:

var url = "www.example.com";

字符串格式:

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

字符串插值:

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

字符串插值和string.Format哪個性能更好?

還有什么是最適合使用它們的場景?

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

它們都不是更好,因為它們在運行時相等。 字符串插值由編譯器重寫為string.Format ,因此兩個語句在運行時完全相同

還有什么是最適合使用它們的場景?

如果您想在字符串格式中使用范圍內的變量,請使用字符串插值。 字符串插值更安全,因為它對字符串的有效性進行編譯時檢查。 如果從外部源(如資源文件或數據庫)加載文本,請使用string.Format

在大多數情況下,它們是相同的,但如果您在接受格式字符串的日志記錄語句中使用它們,則不同。 (例如: log.Debug("URL: {0}", url)

如果您使用 {0} 格式,則在日志記錄框架決定是否發出此消息之前,參數不會被轉換為字符串,而 {myVar} 格式在輸入函數之前被轉換為字符串.

因此,在僅輸出 Info 及以上信息的 log.Debug() 調用中,{myVar} 格式始終將二進制文件支付為文本稅,而 {0} 格式僅在您實際需要時支付稅費。

在傳遞字符串的情況下,這無關緊要,但對於二進制數據和浮點數據,它可以產生很大的不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM