【发布时间】:2012-10-18 11:21:53
【问题描述】:
在最新一期的 JavaSpecialists 通讯中,作者提到了一段 Java 无法编译的代码
public class A1 {
Character aChar = '\u000d';
}
尝试编译一下,会报错,如:
A1.java:2: 字符文字中的非法行结束
字符 aChar = '\u000d';
^
为什么等效的一段 c# 代码没有显示出这样的问题?
public class CharacterFixture
{
char aChar = '\u000d';
}
我错过了什么吗?
编辑:我提出问题的初衷是 c# 编译器如何正确解析 unicode 文件(如果是的话)以及为什么 java 仍然应该坚持不正确的解析(如果是的话)? 编辑:我还想恢复我原来的问题标题?为什么要进行如此繁重的编辑,我强烈怀疑它严重改变了我的意图。
【问题讨论】:
-
哈哈。你除了Java要改吗?我需要那种笑声:)
-
您可以恢复原始标题(单击“X 时间前编辑”链接查看修订)。然而,原标题对于比较 Java 的“方式”和 C# 的“方式”具有主观性和争论性。它们是具有不同规范的不同语言。
-
@pst - 但是有了这个标题,我不应该问这个问题,因为同一份时事通讯给出了足够的解释。我尊重所做的编辑,并不强制恢复它。我的意图是为什么两个相似的编译器在这种情况下存在差异。
-
我不是故意输的(我认为它仍然存在,即使不在最前沿)。在这一点上,我唯一能给出的解释是“因为规范是这样写的”。虽然并非总是如此,我发现 C# 通常“清理”了 Java 使用的语法,同时逐渐添加了 Java 中没有的新功能。我怀疑其中一些基本的解析“缺陷”是由从事 C# 1.0 工作的个人解决(该版本比 Java 晚了至少几年,并且深受 Java 的影响)。
标签: c# java unicode syntax-error