2010-05-02 81 views
4

我正在维护一些我正在转换为C#的Java代码。Java char字符到C#char literal

的Java代码是这样做的:

sendString(somedata + '\000');

而在C#我试图做同样的:

sendString(somedata + '\000');

但在 '\ 000' VS2010告诉我即“字符文字中的字符太多”。我如何在C#中使用'\ 000'?我试图找出这个角色是什么,但它似乎是“”或某种类型的换行符。

你知道这个问题什么?

谢谢!

回答

6

'\0'将在C#就好了。

发生了什么事是,C#看到\0并将其转换为NUL字符为0的ASCII值;然后它看到两个0 s,这是一个字符内非法的(因为您使用单引号,不是双引号)。 nul字符通常是不可打印的,这就是为什么当您尝试打印时它看起来像一个空字符串。

您在Java中输入的内容是支持的octal数字符文字。 C#不支持字符数字中的八进制文字,以减少编程错误。 *

形式'\u0000'其中0000是一个1-4位数字的十六进制数的C# does supports Unicode literals。在PHP中,例如,如果您输入的数字前导零是一个有效的八进制数,则会被翻译。如果它不是合法的八进制数,则不能正确翻译。 <? echo 017; echo ", "; echo 018; ?>在我的机器上输出15, 1

+0

嘿......我们写的实际上是一样的。 +1 – 2010-05-02 13:03:38

+0

感谢你们俩,它似乎工作得很好:) – Kristoffersen 2010-05-02 14:35:03

4

这是一个null character,也被称为NUL。你可以在C#中将它写成'\ 0'。

在C#中,字符串“\ 000”表示三个字符:空字符,后跟两个零数字。由于字符文字只能包含一个字符,这就是为什么你会得到错误“字符字面值太多的字符”。

+0

而且我们都被命名为马克......所以对你也是+1。 – 2010-05-02 13:04:34