在 C# 中的字符串前添加 @ 符号
Adding an @ symbol before a string in C#
在控制台应用程序中,传递了几个参数。其中之一是文件路径。这工作正常,除非路径包含空格。在文件名中包含空格的解决方法是在前面添加一个 @
符号,例如 @"folder f/file.exe"
如何将 @
符号添加到 args[4]
参数?
boot = new Main(args[2], args[3], args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r"));
我已经尝试了以下方法,但它对我不起作用。
boot = new Main(args[2], args[3], @"" + args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r"));
这不是您需要更改的参数,而是您提供给它的字符串:
private void myMethod(string input){
}
myMethod(@"hello");
字符串前面的 @
符号只是一个语法特性,它改变了字符串文字的解释方式。它只影响它前面的实际文字,使其成为 逐字字符串文字 。它只会影响字符串文字的解析方式,而不会进一步影响正在创建的字符串对象。每个逐字字符串文字都有一个等效的非逐字字符串文字,它将创建 same 字符串对象。例如,逐字字符串文字 @"\xy"
等同于字符串文字 "\xy"
.
在您的例子中,逐字字符串文字是 @""
,这已经等同于另一个空字符串文字 ""
。 @
在那里无效。
逐字字符串解析也只影响某些必须在普通字符串文字中转义的字符。对于那些字符,它们是按字面解释的,所以你不需要转义它们。
然而,对于空格,没有任何效果,因此您一开始就不需要使用逐字字符串文字。只要您将路径作为单个字符串传递,它就可以正常工作。
如果您在运行时传递参数,请使用引号 "close" 它的值在:
C:\your_console_application "arg_1_value" "arg 2 value"
这将在应用程序中提取为:
args[0] -> arg_1_value
args[1] -> arg 2 值
在控制台应用程序中,传递了几个参数。其中之一是文件路径。这工作正常,除非路径包含空格。在文件名中包含空格的解决方法是在前面添加一个 @
符号,例如 @"folder f/file.exe"
如何将 @
符号添加到 args[4]
参数?
boot = new Main(args[2], args[3], args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r"));
我已经尝试了以下方法,但它对我不起作用。
boot = new Main(args[2], args[3], @"" + args[4], (args.Length == 5) ? "" : args[5], args[args.Length - 1].Equals("-r"));
这不是您需要更改的参数,而是您提供给它的字符串:
private void myMethod(string input){
}
myMethod(@"hello");
字符串前面的 @
符号只是一个语法特性,它改变了字符串文字的解释方式。它只影响它前面的实际文字,使其成为 逐字字符串文字 。它只会影响字符串文字的解析方式,而不会进一步影响正在创建的字符串对象。每个逐字字符串文字都有一个等效的非逐字字符串文字,它将创建 same 字符串对象。例如,逐字字符串文字 @"\xy"
等同于字符串文字 "\xy"
.
在您的例子中,逐字字符串文字是 @""
,这已经等同于另一个空字符串文字 ""
。 @
在那里无效。
逐字字符串解析也只影响某些必须在普通字符串文字中转义的字符。对于那些字符,它们是按字面解释的,所以你不需要转义它们。
然而,对于空格,没有任何效果,因此您一开始就不需要使用逐字字符串文字。只要您将路径作为单个字符串传递,它就可以正常工作。
如果您在运行时传递参数,请使用引号 "close" 它的值在:
C:\your_console_application "arg_1_value" "arg 2 value"
这将在应用程序中提取为:
args[0] -> arg_1_value
args[1] -> arg 2 值