Мне трудно понять разницу между этими двумя командами, которые, по моему мнению, должны делать то же самое.Я разместил весь код ниже на случай, если что-то непонятно.
Я создал две функции в классе 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