web-dev-qa-db-ja.com

文字列の補間とString.Format

文字列補間を使用すると、顕著なパフォーマンスの違いがありますか?

myString += $"{x:x2}";

vs String.Format()?

myString += String.Format("{0:x2}", x);

Resharperが修正を促しているので、私はただ尋ねています。

85
Krythic

気づくのは相対的です。ただし、文字列補間はコンパイル時にstring.Format()に変換されるため、結果は同じになります。

ただし、微妙な違いがあります。 this の質問からわかるように、書式指定子の文字列の連結により、追加のstring.Concat()呼び出しが発生します。

61
Jeroen Vannevel

文字列の補間は、コンパイル時にstring.Format()に変換されます。

また、string.Formatでは、単一の引数に複数の出力を指定し、単一の引数に異なる出力形式を指定できます。しかし、文字列補間の方が読みやすいと思います。だから、それはあなた次第です。

a = string.Format("Due date is {0:M/d/yy} at {0:h:mm}", someComplexObject.someObject.someProperty);

b = $"Due date is {someComplexObject.someObject.someProperty:M/d/yy} at {someComplexObject.someObject.someProperty:h:mm}";

いくつかのperformanceテスト結果があります https://koukia.ca/string-interpolation-vs-string-format-string-concat- and-string-builder-performance-benchmarks-c1dad38032a

4
Paul