这可能是我犯的一个简单错误,但我在读取 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()
有人能帮我解决这个问题吗?
编辑:
文件的 XML
内容无关紧要。这是用于分配目的,但它是一个简单的客户文件,我正在将其与订单文件进行比较。
文件头是
<?xml version="1.0" encoding="utf-8"?>
@attribute
的字面意思是 @CustomerID
,我无法改变它是如何传递到我的程序中的。我可以改变我处理它的方式,所以如果我可以使用另一种方法来执行将其作为属性传入的连接,我可以改变它。
最佳答案
A "C# string literal ”和“命令行参数”生活在不同的世界,它们彼此无关。
C# 编译器在编译时评估(逐字或常规)字符串文字。 '@' 符号是用于逐字字符串文字的转义字符,它 (a.o.) 告诉编译器按字面意思处理某些字符而不是转义字符。例如。 @"hello\tworld"
将编译成一个带有实际反斜杠后跟 t
的字符串,而 "hello\tworld"
变成 \t
进入一个选项卡。
命令行参数是在运行时传入的,因此不能将其视为字符串文字。这使您有责任处理代码中的“@”字符。
关于C# 字符串文字作为命令行参数使用@,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934646/