C#字符串的$修饰符是什么?

4
这个问题听起来和以下问题类似:C#中字符串前的 @ 是什么意思?。但我已经知道在C#中@字符在字符串字面量前的含义了。
然而,现在我在一个示例中看到了这个:
var xml = $@"<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>text</text>
        </binding>
    </visual>

    <audio src='ms-winsoundevent:Notification.Looping.Alarm10' loop='true'/>
</toast>";

有一个额外的$与@一起出现。这是什么意思?

虽然它使用了字符串插值修饰符,但实际上并没有使用字符串插值。 - Yuval Itzchakov
1
@YuvalItzchakov 是的,但我想那是我的错误,因为我没有意识到它是如何工作的。之后我尝试了一个string.format,但失败了。在发布问题之前,我从文本标记中删除了我的{0},因为我认为那可能是另一个问题。 - stefan.s
2个回答

5

这是一个新的功能,叫做“插值字符串”,适用于C# 6.0(https://msdn.microsoft.com/en-us/library/dn961160.aspx

基本上,它替换了旧版本C#中的string.Format("", params);

使用示例:

var str = "test";
var xml = $@"<toast>
    <visual>
        <binding template='ToastGeneric'>
            <text>{str}</text>
        </binding>
    </visual>
    <audio src='ms-winsoundevent:Notification.Looping.Alarm10' loop='true'/>
</toast>";

1
好的,我明白了。那么我的问题实际上应该是关于$而不是@$,因为它们没有联系。也许这就是我没有找到信息的原因... - stefan.s

1

$符号在C#中表示插值字符串。

MSDN: https://msdn.microsoft.com/en-us/library/dn961160.aspx

使用示例:

string zzz = "world";
string helloWorld = $"hello {zzz}"; // hello world

在您的代码中,字符串内部没有花括号,因此不会进行实际的值注入 - 您可以删除$并仍然获得相同的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接