2015-07-20 93 views
-8

對不起一個變量,如果這是一個重複的,但我沒有找到我所需要的(超過30分鐘搜索網頁的)命名基於另一個變量

我想與其他變量名創建變量(字符串) 有沒有可能在c#中做到這一點? 我是新來的c#。

+8

爲什麼你會需要在運行時改變一個變量名的東西的最佳方式? – ken2k

+1

你有什麼嘗試?你打算如何使用這個動態命名的變量?使用某種類型的集合可能會更好。 – maniak1982

+1

我通常使用一個字典爲那種事情。如果您希望獲得幫助,您需要更好地解釋您的用例。 –

回答

5

不,你不能,誠實地說,有這樣的功能是沒有道理的。

如果你願意,你可以使用字典,在那裏你可以有鑰匙是串:

Dictionary<string, RectangleShape> shapes = new Dictionary<string, RectangleShape>(); 
    shapes.Add("nameTheKey", new RectangleShape(...)); 

然後,你可以簡單地閱讀「變量」像

shapes["nameTheKey"] 
2

沒有,並沒有任何意義。

變量(或更準確地說,本地)名稱僅在編譯時很重要,並且它們在運行時只有值。如果你添加一個新變量,你還需要添加代碼來處理該變量 - 但是如何在沒有編譯器的情況下編寫和使用該代碼?

但是,如果你只是想將一些數據存儲在一個鍵值的方式,你可以使用字典:

var data = new Dictionary<string, decimal>(); 

第一種說法是關鍵,第二個是值。請注意,所有值都必須是相同的類型,或者是來自某種常見類型的類型。如果你想要更像JavaScript的東西,你可以看看C#的動態特性(dynamicExpandoObject,...) - 但坦率地說,你會更好地採用C#的成語99%時間。

ExpandoObject允許你使用這樣的代碼:

dynamic item = new ExpandoObject(); 
((IDictionary<string, object>)item)["Message"] = "Hi!"; 

Console.WriteLine(item.Message); 

但同樣,這是很少做:)

相關問題