[英]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.