具有有效escape sequence
(如n
)的普通字符串文字的编译器,t
编译没有任何错误。
但是当我使用像s
这样的invalid escape characters
时,w
编译器显示错误。是的,我们可以通过使用verbatim string
或用\
转义来避免错误,但我的问题是
编译器是否验证字符串文字的有效escape characters
如果是这样,那只是目的!
编译器是否验证字符串文本是否有效转义字符
是的,它显然确实如此,这就是您收到错误消息的原因。
如果是这样,那只是目的!
我真的不明白这个问题。我假设您想知道为什么编译器不简单地接受无效的转义序列并逐字处理它们。这确实是一种可能性,但它会使字符串文字的解释略有不一致:x
根据x
的实际值意味着不同的事情。
至少,C# 严格检查转义序列有效性没有缺点。也许它可以避免由于不同数量的连续反斜杠引起的拼写错误和混淆而导致的错误。
是的,编译器会验证字符串,如果使用无效的转义字符,则会出现错误:
编译器错误 CS1009 - MSDN
意外字符跟在字符串中的反斜杠
()
后面。这 编译器需要有效的转义字符之一。欲了解更多信息 信息,请参阅字符转义。