C# 滥用C 6.0的新插值字符串

C# 滥用C 6.0的新插值字符串,c#,string-interpolation,C#,String Interpolation,我认为C 6.0中的插值字符串是迄今为止最实用的。但是,如果字符串如下所示,使用插值有什么意义: string str0 = $"{chatType + prefix + group + name} > {message}"; 您将如何格式化此文件?如您所见,我使用C的字符串插值和concat符号“+”,这看起来有点奇怪 另外,有人能告诉我什么时候会滥用此功能吗,例如: static string str1 = $"{str2}:" 而不是: static string str2 =

我认为C 6.0中的插值字符串是迄今为止最实用的。但是,如果字符串如下所示,使用插值有什么意义:

string str0 = $"{chatType + prefix + group + name} > {message}";
您将如何格式化此文件?如您所见,我使用C的字符串插值和concat符号“+”,这看起来有点奇怪

另外,有人能告诉我什么时候会滥用此功能吗,例如:

static string str1 = $"{str2}:"
而不是:

static string str2 = str1 + ":"
格式为:

string str0 = $"{chatType}{prefix}{group}{name} > {message}";
据我所知,插值字符串或string.Format的好处应该是内存使用。将字符串添加到字符串时,将在内存中创建一个新字符串。因此:

string x = a + b + c + d;
为a+b创建一个字符串,为该+c创建一个字符串,为该+d创建另一个字符串。所以在内存中创建了三个字符串,其中只需要一个


对我来说,明显的好处是它看起来更漂亮、更整洁,不会到处都是双引号,更容易看到结果字符串的样子。使用string.format是一种更好的方法。

插值字符串中的插值字符串如何?我希望这不是讽刺,因为它听起来更奇怪。这是一种有趣的尝试。是的,在字符串插值中加入一个字符串插值是可能的。只要使用可读性更好的,并且对未来6个月内阅读代码更明显的东西就行了。除非这是关键任务循环的核心,否则它真的不重要。我相信你会找到很多意见,但最终,这是你的选择。请注意其中的含义。这里有一个有趣的读物:嗯,那些不断变化的笑话没有让我进一步探究知识。啊,是的。不幸的是,这是假消息我只是花了一点时间阅读编译器生成的IL,因为这是我的怀疑,但我被证明是错的。实际上,字符串x=a+b+c+d;。。。每个参数都被加载到一个临时数组中,然后通过该数组调用string.Concat。大约和您希望的一样高效。当多个常量字符串作为表达式的一部分包含在引号中时,问题更大。如果您要在多行上添加到字符串中。您应该使用stringbuilder