C# 字符串文字作为命令行参数使用@

C# string literal as a command line argument using @

这可能是我犯的一个简单错误,但我在读取 XML 上下文中以 @ 开头的字符串参数时遇到问题。

例如:

program.exe file.xml @attribute

@attribute 字符串是我需要在连接中检查的属性:

var testjoin = from x in tree1 join y in tree2 on (string)x.Attribute(args[2]) equals (string)y.Attribute("Order") select x

但是当我尝试将它直接传递给 x.Attribute()

时,我一直在抛出错误 "name cannot begin with the '@' character..."

有人能帮我解决这个问题吗?

编辑: 文件的 XML 内容无关紧要。这是用于分配目的,但它是一个简单的客户文件,我正在将其与订单文件进行比较。

文件头是

<?xml version="1.0" encoding="utf-8"?>

@attribute 的字面意思是 @CustomerID,我无法改变它是如何传递到我的程序中的。我可以改变我处理它的方式,所以如果我可以使用另一种方法来执行将其作为属性传入的连接,我可以改变它。

一个"C# string literal”和一个"command line argument"生活在不同的世界,彼此没有任何关系。

C# 编译器在编译时评估(逐字或常规)字符串文字。 '@' 符号是用于逐字字符串文字的转义字符,它 (a.o.) 告诉编译器按字面意义处理某些字符而不是转义字符。例如。 @"hello\tworld" 将编译成一个带有实际反斜杠后跟 t 的字符串,而 "hello\tworld"\t 变成制表符。

命令行参数是在运行时传入的,因此不能将其视为字符串文字。这使您有责任处理代码中的“@”字符。