2013-01-13 18 views
0

我需要聲明一個名稱與字符串匹配的變量。如何使用字符串聲明變量?

這是我需要工作,但在現實中,它與名稱"s"(我需要它把存儲在字符串s的名字) 我怎樣才能解決這個新的表達實例編譯?

代碼:

foreach (string s in StringArray) 
      { 
       if (SomeDifferentArray.Contains(s) != true) 
       { 
        Expression s = new Expression(); 
       } 
      } 

我需要一種新的表達實例在StringArray每個字符串,而且每個表達式需要根據該字符串保存字面來命名。

+0

你或許應該標記這個C#或提,這是C#somehwere(至少,我猜這是C#) –

+1

*「這是我需要工作」 * - 不,這是你*認爲*您需要。事實上,這將是一個非常糟糕的解決方案。將程序邏輯綁定到變量名稱(編譯完成後甚至不存在)將導致無法維護的代碼。你想要一個集合,可能是字符串映射到任何東西。 –

+0

你可能有一個設計問題,而不是這個問題。你不想做那樣的事情。審查你的設計。 – DarthVader

回答

2

這看起來像一個映射集合的用例。我不是一個C#用戶自己,但我懷疑Dictionary類將是一個去:

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

C#是編譯型語言,所以你不能創建依賴編譯時變量在運行時數據上。但是,可以使用映射式數據結構將唯一鍵對象與單個值對象相關聯。在你的情況下,你可以用它將每個string與一個Expression關聯起來。

Dictionary<string, Expression> myExpressionDict = new Dictionary<string, Expression>(); 

foreach(string s in StringArray) { 
    if(!SomeDifferentArray.Contains(s)) { 
     myExpressionDict[s] = new Expression(); 
    } 
} 

這個循環結束後,任何字符串s在原始SomeArray,你可以做myExpressionDict[s]以獲得其關聯Expression對象。

在C#這個結構被稱爲「字典」。取決於您的編程語言或庫,這個相同的數據結構也可以通過名稱「映射」或「散列」。例如,在Java集合框架中它被稱爲Map,在Ruby中他們使用術語hash,而在Python中它通過名字字典(或簡稱dict)。

0

你可以使用地圖或字典。不完全是你問的,而是更簡單。