我無法理解這兩個命令之間的區別,在我看來應該做同樣的事情。如果有任何不清楚的地方,我已經發布了下面的整個代碼。爲什麼在VB.Net中string.join返回列表對象
我在Person類中創建了兩個函數,一個返回一個包含名字,中間名和姓氏的列表,另一個返回名稱的連接字符串。我引用返回列表來連接下面的行字符串的函數:
FullName = String.Join(" ", Me.Get_NameList())
然而,當我打電話:
Console.WriteLine(Person1.Print_Name())
我得到什麼樣子的列表對象,而不是字符串:
System.Collections.Generic.List`1[System.String]
如果我改變的代碼看起來像這樣:
Public Function Print_Name()
Dim FullNameList As List(Of String) = Me.Get_NameList()
Dim FullName As String
FullName = String.Join(" ", FullNameList)
Return FullName
End Function
個
控制檯打印:
John Q Doe
爲什麼我收到由第一分配列表一個變量,然後加入一個不同的答案嗎?這是否與列表存儲在內存中有關?
在此先感謝您的幫助。
下面是完整的代碼:
Imports System
Module Module1
Sub Main()
Dim Person1 As New Person("John", "Q", "Doe")
Console.WriteLine("Get_Name Values")
Dim g1 As List(Of String) = Person1.Get_NameList()
Console.WriteLine(String.Join(" ", g1))
Console.WriteLine("Print_Name Values")
Console.WriteLine(Person1.Print_Name())
End Sub
End Module
Class Person
Private FirstName As String
Private MiddleName As String
Private LastName As String
Public Sub New(ByVal Fn As String, ByVal Mn As String, ByVal Ln As String)
FirstName = Fn
MiddleName = Mn
LastName = Ln
End Sub
Public Function Get_NameList()
Dim NameList As New List(Of String)
NameList.Add(FirstName)
NameList.Add(MiddleName)
NameList.Add(LastName)
Return NameList
End Function
Public Function Print_Name()
'Dim FullNameList As List(Of String) = Me.Get_NameList()
Dim FullName As String
FullName = String.Join(" ", Me.Get_NameList())
Return FullName
End Function
End Class
fyi - 它通常被認爲是不好的做法,有沒有顯式返回類型的函數。可疑的設置函數的返回類型將解決您的問題,或者至少強制編譯器錯誤,這會使問題更加明顯。哦,而且你有Option Infer或Option Explicit,對不對? – 2012-02-27 15:43:30
開啓'選項嚴格開啓'。保持關閉可能會導致無法找到問題。 – Ryan 2012-02-27 15:45:36
只是一個方面的說明,但你會更好,只是在Print_Name中返回一個串聯的字符串,而不是獲得一個列表,然後加入它。或者使用'String.Format' – musefan 2012-02-27 15:53:23