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

标签 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 内容无关紧要。这是用于分配目的,但它是一个简单的客户文件,我正在将其与订单文件进行比较。

文件头是

<?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/

相关文章:

c# - HTTP Expect Continue 性能

java - Android 手机上的绘图应用程序是否需要 xml 布局?

c# - 如何将字节数组转换为xml?

c# - 如何在 LINQ to XML 语句中返回同级 XElements?

c# - 具有属性映射的 Dapper

c# - 正则表达式给出编译器错误

c# - 如何在 gridview 的右侧而不是在 asp.net 的左侧显示编辑和删除按钮?

c# - 使用 Linq 一般展平 XDocument?

c# - 将 LINQ To XML 用于 HTML 页面的更好方法

c# - 使用 XDocument 不规则地写入 XML