2009-12-16 142 views
1

我想要做的是能夠取得一個鍵值對的字典,並使關鍵字變量的名稱和值的值。 從搜索網絡似乎是非常模糊的是否這是可能的。在vb.net中動態命名變量

PHP中的等效將是:

的foreach($數組作爲$密鑰=> $ VAL) { $$鍵= $ VAL; }

謝謝。

+0

爲了什麼目的?鍵本質上充當動態變量名稱來訪問已經存在的值。 – jball 2009-12-16 23:22:06

回答

1

您必須在編譯時以.Net CLR語言(不要與.Net動態運行時語言混淆)聲明變量。除此之外,如果你也知道變量的類型,通常會更好。 .Net程序員普遍認爲this a good thing(該鏈接是針對C#的,但內容仍然適用)。

你想對這些變量做什麼?告訴我們,我敢打賭,我們可以給你一個更好的方式來完成同樣的事情。

+0

基本上我在思考一個Silverlight數據網格,這是我的理解,你不能綁定一個數組/列表/字典等到一組列,所以我在想,而不是一個醜陋的開關轉換每個值在代碼中的一個命名變量我認爲它會動態地執行它更好。 – 2009-12-16 23:32:28

+0

我仍然需要更多地瞭解你的字典和你的字典中的對象類型。網格中的每一列是否與字典中的記錄中的屬性或字段(或從它們中的多個轉換而來)相對應?我沒有使用silverlight,但如果是這樣,我知道你可以綁定到一個winforms或asp.net網格控件。 – 2009-12-17 00:05:08

+0

我繞了一圈,根本不是什麼大麻煩,所以我不打擾它讓自己更容易混淆爲了稍微更乾淨的代碼,謝謝你的幫助。 – 2009-12-17 00:15:35

0

這是可行的,但它是一個緩慢的操作。您必須使用reflection通過字符串表示來訪問變量。

如果可能的話,使用Generics將對象本身存儲爲鍵將會快得多。在VB.NET with a Dictionary here中有一個例子。這樣做意味着在運行時不需要投射或反射。此外,它允許intellisense直接在集合上工作,這是另一個關於泛型的真棒事情。