c#-字符串插值
我是C#的初学者。到目前为止,我遇到了几种将变量嵌入字符串值的方法。其中之一是C#6.0中引入的字符串插值。下面的代码是字符串插值的示例c#-字符串插值,c#,string,c#-6.0,string-interpolation,C#,String,C# 6.0,String Interpolation,我是C#的初学者。到目前为止,我遇到了几种将变量嵌入字符串值的方法。其中之一是C#6.0中引入的字符串插值。下面的代码是字符串插值的示例 int number = 5; string myString = $"The number is {number}"; 我想知道的是,使用字符串插值是否比使用以下方法格式化字符串有好处 // first way int number = 5; string myString = "The number is " + number; //second wa
int number = 5;
string myString = $"The number is {number}";
我想知道的是,使用字符串插值是否比使用以下方法格式化字符串有好处
// first way
int number = 5;
string myString = "The number is " + number;
//second way
int number = 5;
string myString = string.Format("The number is {0}", number);
您展示的第一种方法将在内存中创建多个字符串。从内存中,我认为它创建了
number.ToString()
string,文本“number是”
string,然后是名为myString
第二种方法非常简单:字符串插值编译为您使用的String.Format()
方法调用
编辑:第二种方式和插值也将支持格式说明符
更详细的讨论可以在这里找到:@KQa-我不同意。OP知道如何进行字符串插值,他们更关心引擎盖下发生的事情,而您提到的问题是如何插值字符串。标记为重复的问题是专门询问这两种方法的性能。这个问题更广泛,所以我决定重新打开..我想
string.Format
也会调用int
上的ToString()explanation@Orphid-我同意这一点,事实上,我很确定它必须这样做。我记得,它没有允许格式化,应该把它添加到我的答案中。@ridecar2-我想,我和OP感兴趣的是实现之间的差异。鉴于需要ToString
无论如何,参数string.Format
是否实际上在内存中创建的字符串总数较少?如果是,它是如何做到的架线工,对吗?@Orphid-现在你让我想解雇ILDASM。我必须抵制诱惑!