也许我没有看到或理解我读过的任何答案,但我在使用settings.Default.(mysetting)
的逐字字符串文字(@)时遇到了麻烦。我正在尝试做类似
Directory.GetFiles(@Setting.Default.(mysetting),"*.txt");
并且似乎无法找到使其正常工作的正确语法。
答案 0 :(得分:2)
@标识一个字符串常量文字,其中反斜杠不应被解释为转义符号。您在此处尝试时无法在方法调用前使用它。
有效的作业可能是
string path = @"c:\temp\example.txt";
通常将\ t解释为制表符,从而使文件引用非法。它与
完全相同string path = "c:\\temp\\example.txt" ;
但是更容易阅读。
答案 1 :(得分:1)
@
逐字字符串与字符串文字一起使用。所以你的代码应该是:
Directory.GetFiles(Setting.Default.(mysetting),@"*.txt");
因为"*.txt"
是代码中的字符串文字。
(虽然不相关,但您可以将@
与变量名称一起使用,请参阅C# Variable Naming and the @ Symbol)
答案 2 :(得分:1)
要使用@
作为逐字字符串文字的一部分,字符串文字必须就在那里 - 而不仅仅是返回字符串的属性,方法等。
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
答案 3 :(得分:0)
除非我遗漏它,否则你仍然需要将字符串包装在引号内。