[英]php $$var equivalent in vb.net (vb2010)
我正在VB.NET中編寫程序,我需要獲取一個其字符串值是動態獲取的變量。 就像在PHP中一樣:
$text = "new_var" (gotten dynamically)
$$text = 100
我想在VB.NET中做到這一點。
VB.NET中的直接等效項稱為反射 。 通過反射,您可以在運行時檢查類型的名稱及其成員。 但是,通常僅應將其用作最后的手段。 通常,在切換語言時,直接等效不是最佳選擇,因為范例不同。 即使您確實使用了反射,它也不適用於局部變量,因此您可能仍然需要對代碼進行重新設計。
更好的解決方案可能是使用Dictionary
對象。 .NET中的Dictionary
類是哈希表的實現,可讓您輕松存儲鍵/值對。 因此,您可以將其存儲在Dictionary
,而不是將值存儲在變量中,如下所示:
Dim d As New Dictionary(Of String, Integer)()
d("new_var") = 100
然后,不用按其字符串名稱查找變量,只需使用其鍵訪問Dictionary
中該項的值,如下所示:
Dim text As String = d("new_var")
(Of String, Integer)
部分可能會使您感到困惑。 這些參數指定鍵的類型以及“ Dictionary
中每個項目的值。 第一個參數是鍵的類型,第二個參數是值的類型。 因此,換句話說,您希望Dictionary
每個項目的鍵(例如“ new_var”)為String
,並且希望Dictionary
中每個項目的值(例如100)為Integer
。 如果您希望能夠存儲任何類型的對象,則可以始終將其聲明為Dictionary(Of String, Object)
,但是最好盡可能保留指定的類型。 這樣更安全。
如果必須使用反射,最好先嘗試使用屬性解決方案,如果可能的話。 但是我懷疑您真的需要反思,因為聽起來您正在嘗試做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.