2013-06-13 27 views
0

好吧,這可能是不可能的,但我想用一個字符串作爲一個函數的參數,並使用該字符串來命名一個類的新實例。使用Visual Studio 2010與C#XNA,我試圖尋找使用谷歌和這裏的解決方案,但也許我沒有使用正確的關鍵字或東西。想使用一個字符串來動態命名一個類的新實例

 public void createRace(string raceName, Element element1, Element element2, AbilityScore stat1, AbilityScore stat2, AbilityScore stat3, AbilityScore stat4) 
    { 
     Race temp = new Race(); 
     temp.raceName = raceName; 
     temp.primaryElement = element1; 
     temp.secondaryElement = element2; 
     temp.primaryAbility = stat1; 
     temp.secondaryAbility1 = stat2; 
     temp.secondaryAbility2 = stat3; 
     temp.weakAbility = stat4; 
    } 

我想比賽臨時使用raceName,而不是臨時的命名比賽的新實例時,如果它是不可能讓我知道,我會找到一個解決辦法。

+4

爲什麼需要這個要求,編譯器是不是真的要關心你命名你的變量 –

+0

這是不可能的(因爲變量名編譯時間,但變量的值是運行時),但由於您沒有解釋爲什麼要讓該名稱有所不同,因此不清楚什麼是正確的解決方法。 TGH建議的'Dictionary'可能是你想要的... –

+0

有人可能會說你可以使用構造函數(或對象初始值設定項)來創建'Race'的實例 - 並且你不需要'createRace'方法在所有。 –

回答

1

我會用字典來解決這個問題。下面的代碼將讓你「raceName」基於訪問您的實例

Dictionary<string,Race> races = new Dictionary<string,Race>(); 

    public void createRace(string raceName, Element element1, Element element2, AbilityScore stat1, AbilityScore stat2, AbilityScore stat3, AbilityScore stat4) 
    { 
     Race temp = new Race(); 
     temp.raceName = raceName; 
     temp.primaryElement = element1; 
     temp.secondaryElement = element2; 
     temp.primaryAbility = stat1; 
     temp.secondaryAbility1 = stat2; 
     temp.secondaryAbility2 = stat3; 
     temp.weakAbility = stat4; 

     races.Add(raceName,temp); 
    } 
+0

感謝,似乎工作,誠實地沒有預料到一個快速的迴應。 –

相關問題