我可以将所有字符串默认为 C# 6.0 内插字符串连接吗?

Can I default all my strings to C# 6.0 interpolated string concatenation?

我发现自己在代码中经常使用 C# 6.0 内插字符串连接样式 $"Hello {name} {lastName}!"

我了解到,在引入此功能时,它需要一个单独的语法来不破坏任何包含 {} 符号的先前字符串。但是,在创建新项目时,我不介意在极少数情况下必须编写 {{}},因为我需要字符串中的实际符号。当然,要求添加一个额外的 $ 并不多,但是当我发现自己对我的大部分字符串都这样做时,我宁愿尽可能省略它。

我想要 "Hello {name} {lastName}!" 今天 "Hello John Doe" just as $"Hello {name} {lastName}!" 结果。

如何让编译器默认将所有字符串视为内插字符串?

你不能。目前没有这样的编译器设置。

您可以向 code-cracker 推荐一个分析器修复程序。

你也可以用正则表达式搜索if:(?<!$)"[^"\{]*\{

我有同样的问题,由于无法找到解决方案,我想出了一个自定义 visual studio 代码片段。这不是最初问题的解决方案,但也许对某人有帮助。

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>String interpolation</Title>
            <Shortcut>1</Shortcut>
            <Description>Code snippet for string interpolation</Description>
            <Author>md</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
                <SnippetType>SurroundsWith</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>expression</ID>
                    <ToolTip>String interpolation helper</ToolTip>
                    <Function></Function>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$$"$selected$$end$";]]></Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

这样你可以按“1”然后按“TAB”得到$"";