2010-05-02 83 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