2015-06-07 44 views
0

所需的代碼是這樣的:vb.net - 如何給一個變量(修剪)串連到另一個變量來完成它的變量名

Dim myArray(0) As String 
Dim ay As String = "ay" 

myArr & ay(0) = "asd" 

我試過,但沒有工作

Dim classlist1(0) As String 
Dim classlist2(0) As String 
Dim classlist3(0) As String 
Dim classlist4(0) As String 
Dim count As Integer = 0 

For _year As Integer = 1 To 4 
    ("classlist" & _year)(count) = "hi" 
    count += 1 
Next 
+0

目前還不清楚是什麼你甚至試圖* *做。您不能將值賦給*表達式*,只能賦給變量。 – David

+0

我在一些帖子中看到連接控件名稱和變量,它看起來像這樣,Me.Controls(「txtbox」&var)。這是我需要的但我的不是控件 – Shivr

+0

控件是有名稱的對象,所以'Me.Controls()'版本與它們一起工作。您不能在代碼中「創建」var名稱。你可能只需要一個數組或List。 – Plutonix

回答

1

你看到這樣的事情任何時候:

Dim classlist1(0) As String 
Dim classlist2(0) As String 
Dim classlist3(0) As String 
' etc. 

這是您使用了錯誤的數據結構的指示。而不是嘗試動態構建變量名稱(這在靜態語言中不太可能,至少不是沒有一些非常難看的反射代碼,運行時錯誤的可能性很高),只需使用集合

例如,如果你想字符串的集合:

Dim classList As New List(Of String)() 

如果你想串的集合的集合:

Dim classLists As New List(Of List(Of String))() 

然後你就可以在父引用嵌套列表名單。所以要加你的第一個「年」的類:

classLists.Add(new List(Of String)) 

,並添加一個類來那年:

classLists(0).Add("some value") 

正如你可以看到,它開始變得有點困難,以保持跟蹤數據結構。這是創建自定義類型和結構變得非常有用的地方。例如,不是將「年份」表示爲字符串列表,而是創建一個實際的Year類。該類可以在內部保存一個字符串列表,以及其他邏輯/數據。

+0

向我的小腦道歉,但我怎麼能把我的4個數組,即classlist1到4列入一個列表?所以我可以調用classLists(0).add(「val」),如果我想添加classlist1 – Shivr

+0

@Shivr:我的代碼是使用列表而不是數組(你會發現在使用中更容易像這樣的嵌套結構,特別是當你需要在結構上構建任何複雜的查詢時)。當你想添加一個新的列表到「列表列表」中時,你可以這樣做:'classLists.Add(new List(Of String))'如果你已經有一個列表並且想添加它,這個:'classLists。 Add(existingList)'這沒什麼特別的,它只是創建一個「列表清單」。同樣的規則適用於每個抽象層次。 (雖然我的最後一個建議在答案中仍然很清楚。) – David

0

嘗試Dictionary<TKey, TValue> ClassFrom MSDN

Dim classLists As New Dictionary(Of String, String)() 
'Add items with keys 
For _year As Integer = 1 To 4 
    classLists.Add(String.Format("classlist{0}",_year), "hi") 
Next 

,您可以通過鍵獲取值後

Dim key As String = "classlist2" 
Dim value As String = classLists(key) 
相關問題