2011-09-19 35 views
2

所以我想用一個字符串變量來調用或聲明其他東西。 例如:我在文本框中記下「some_random_name」,然後按下一個按鈕,調用一個函數聲明一個名爲「some_random_name」的變量或對象。 另一個例子:我已經從稱爲「a_variable」的integer類型聲明瞭一個變量。我在文本框中記下這個名字,然後按下一個按鈕,調用一個函數,向我顯示「a_variable」的值。 第二個例子也可以做這樣的:C#:使用字符串變量來調用並給其他東西的名字

if (the_wanted_variable == "a_variable") show_value(a_variable); 

但是,這是一個不同的問題。

我找到了一個解決方案......但我無法理解它。這是關於思考。也許需要一個更容易理解的解釋如何做到這一點(不管它有多大)。

謝謝!

+0

看看這裏的例子:http://www.csharp-examples.net/reflection-examples/ –

回答

1

您可以使用字典來存儲變量。

Dictionary<string,string> Variables; 

如果你不想字符串,你可以使用一個Dictionary<string, object>,但你必須要知道的類型投它,當你點擊按鈕。

2

您可以將所有鍵/值對存儲在一個Dictionary中,而不是爲用戶輸入的每個鍵/值對創建不同的變量。

2

反射是一種選擇;但是如果程序的需求是非常可預測的,那麼可以避免它,因爲這可能更容易解決。

在你給出的例子中 - 如果用戶被提供了一個文本框,並且他們輸入了像'MyTest1'這樣的變量的名字並且可以按下一個名爲'Add 1'的按鈕,你可以用一個鍵/值對字典。

換句話說,如果用戶輸入之前未輸入的文本,則創建一個新的整數值並將其值設置爲0.如果用戶單擊某個按鈕,則會調用該值的預定義函數與該密鑰相關聯。向新創建的鍵添加1會返回'1'。