【问题标题】:C# Settings with verbatim string literal带有逐字字符串文字的 C# 设置
【发布时间】:2014-06-05 15:26:39
【问题描述】:

也许我没有看到或理解我阅读的任何答案,但我无法将逐字字符串文字 (@) 与 settings.Default.(mysetting) 一起使用。我正在尝试做类似的事情

Directory.GetFiles(@Setting.Default.(mysetting),"*.txt"); 

而且似乎找不到正确的语法来完成这项工作。

【问题讨论】:

    标签: c#


    【解决方案1】:

    @ 标识一个字符串常量文字,其中反斜杠不应被解释为转义符号。正如您在此处尝试的那样,您不能在方法调用之前使用它。

    一个有效的分配可能是

     string path = @"c:\temp\example.txt";
    

    通常 \t 会被解释为制表符,从而使文件引用非法。完全一样

    string path = "c:\\temp\\example.txt" ;
    

    但更容易阅读。

    【讨论】:

      【解决方案2】:

      @ 逐字字符串与字符串文字一起使用。所以你的代码应该是:

      Directory.GetFiles(Setting.Default.(mysetting),@"*.txt");
      

      因为"*.txt" 是您代码中的字符串文字。

      (虽然不相关,但您可以使用@ 和变量名参见C# Variable Naming and the @ Symbol

      【讨论】:

        【解决方案3】:

        要将@ 用作逐字字符串文字的一部分,字符串文字必须就在其中——而不仅仅是返回字符串的属性、方法等。

        string myStr = @"I'm verbatim, I contain a literal \n";
        string myStr2 = "I'm not\nI have a newline";
        string myStr3 = @myStr2; // still contains a newline, not a literal "\n"
        

        在标识符前面使用@ 允许您使用保留关键字作为标识符。例如:

        string @if = "hello!"; // valid
        

        它也适用于没有实际效果的非保留词。

        string @myVar = "hello!"; // valid
        string newVar = myVar; // can be referred to either way
        

        【讨论】:

          【解决方案4】:

          除非我遗漏了它,否则您仍然需要将字符串用引号括起来。

          【讨论】:

            猜你喜欢
            • 2011-02-10
            • 2011-11-02
            • 1970-01-01
            • 1970-01-01
            • 2013-04-01
            • 2017-03-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多