2016-01-08 20 views
-1

我正在學習Visual Studio 2015中重新學習Visual Basic的在線教程。該教程非常無聊,但無論如何,如果寶石或寶石可能藏在其中,我仍然會通過它們。在一篇教程中,我們創建一個字符串,將其轉換爲一個CharArray,反轉該數組,然後將其一次一個字符地輸出到控制檯。都好。然後,我決定只數組轉換回字符串和使用的WriteLine,踢...vb.NET教程:字符串charArray到字符串給出意想不到的結果。錯誤?

Module Module1 

Sub Main() 

    Dim myText As String = "Hey, this is a string!" 
    Console.WriteLine(myText) 

    Dim myCharArray() As Char = myText.ToCharArray() 
    Array.Reverse(myCharArray) 

    Dim reversedText As String = myCharArray.ToString() 
    Console.WriteLine(reversedText) 

    ' Console output is: 

    ' Hey, this is a string! 
    ' System.char[] 

    ' Even less intuitive, for me, this: 
    Console.WriteLine(myCharArray) 
    ' produces this: 

    ' !gnirts a si siht ,yeH 

    ' in the console. While this: 
    Console.WriteLine(myCharArray.ToString()) 
    ' gives System.char[] again. 

    Console.ReadLine() 

End Sub 

End Module 

顯然的WriteLine有寫出的字符數組沒有問題。我的問題是爲什麼它將字符數組的字符串轉換打印爲System.char [],即使將該轉換顯式分配給String類型的對象時,如果將其他String對象作爲其實際字符串表示形式打印沒有問題。

我意識到這是一個微不足道的問題,但如果有一個潛在的原因,知識會幫助我避免一兩個錯誤,我想知道它。

+0

爲char數組轉換爲字符串,你應該把它作爲參數字符串構造函數。 –

+0

這很有道理。我只使用了CharArray的.toString()方法,因爲它是以intellisense的形式作爲可用於修補的方法之一。我通過你的回答假設.toString()實際上並沒有將它轉換爲String?雖然.toCharArray確實將字符串轉換爲CharArray? –

+0

Infact,'ToString'將'Char []'轉換爲字符串類型名稱的字符串表示形式。但是您需要將其轉換爲從數組中的字符創建的字符串。 –

回答

3

myCharArray.ToString()調用Array.ToString()使用默認實現Object.ToString,它只是返回類型名稱。

要構造從字符數組,而不是字符串 - String(Char[])

Dim reversedText As New String(myCharArray) 
+0

謝謝。這是我錯過的難題。其他答案/評論給了正確的實施。爲什麼是我沒有得到。 –

1

要將char數組轉換爲字符串,您應該將其作爲參數傳遞給字符串構造函數。

Dim str = "This is a string!" 
Console.WriteLine(str) ' This is a string! 
Console.WriteLine(str.ToCharArray().ToString()) ' System.Char[] 
Console.WriteLine(New String(str.ToCharArray())) ' This is a string! 

逸岸,ToString轉換Char[]String;但類型名稱的字符串表示形式,而您需要將Char[]轉換爲從數組中的字符創建的字符串。

相關問題