在C#中的字符串之前添加@符号
在控制台应用程序中传递几个参数。其中之一是文件路径。这工作正常,除非路径包含空格。在文件名中有空格的解决方法是之前有一个@
符号,如@"folder f/file.exe"
如何将@
符号添加到args[4]
参数中,如此类似?在C#中的字符串之前添加@符号
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"));
如果你在运行时使用经过agrument引述为 “关闭” 其值的范围内:
C:\your_console_application "arg_1_value" "arg 2 value"
这将是内appliaction exctracted为:
ARGS [0] - > arg_1_value
ARGS [1] - > ARG 2值
这不是你需要改变的说法,但是字符串你给它:
private void myMethod(string input){
}
myMethod(@"hello");
http://i.imgur.com/tS04lZ8.png给出了这样的错误http://i.imgur.com/P2wZhvh.png –
@MartinMeli“@”是C#语法功能,而不是shell语法功能。在那里放下'@'。 – poke
我是,但是之后空格字符被认为是一个新的字符串,是壳。我会用双引号将它传递 –
在字符串前面的@
符号只是语法功能,改变了字符串文字是如何解释。它只影响它所预置的实际文字,使其成为逐字字符串文字。它只会影响如何解析字符串文字,但不会对正在创建的字符串对象产生进一步的影响。每个逐字字符串文字都有一个等效的非逐字字符串文字,它将创建相同的字符串对象。例如,逐字字符串文字@"\xy"
等价于字符串文字"\\xy"
。
在你的情况下,逐字字符串文字是@""
,它已经等价于其他空字符串文字""
。 @
在那里没有效果。
逐字字符串解析也只影响某些字符,这些字符必须在正常字符串文字内转义。对于这些角色,他们从字面上解释,所以你不需要逃避他们。
但是,对于空格不起作用,所以你不需要首先使用逐字字符串文字。只要你将路径作为单个字符串传递,它应该可以正常工作。
这是个问题,我现在试图从另一个应用程序调用时得到这个结果。休息后我会做什么brb。 –
这是解决方案,应该碰到顶端。 –
您可以将其标记为已接受 –