C#string literal作为使用@的命令行参数

时间:2015-08-11 06:24:56

标签: c# xml linq-to-xml literals

这可能是一个简单的错误,但是我在阅读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内容无关紧要。这是出于分配目的,但它是一个简单的客户文件,我正在与Orders文件进行比较。

文件的标题是

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

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

1 个答案:

答案 0 :(得分:1)

A "C# string literal&#34;和#34;命令行参数&#34;生活在不同的世界,他们彼此无关。

C#编译器在编译时评估(逐字或常规)字符串文字。 &#39; @&#39; sign是一个转义字符,用于逐字字符串文字,(a.o。)告诉编译器按字面意思处理某些字符而不是转义字符。例如。 @"hello\tworld"将编译成一个字符串,其中包含一个实际的反斜杠,后跟t,而"hello\tworld"会将\t转换为一个标签。

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