Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-字符串插值_C#_String_C# 6.0_String Interpolation - Fatal编程技术网

c#-字符串插值

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

我是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 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。我必须抵制诱惑!