2015-08-25 207 views
1

我不知道如何命名該對象。如何將對象分配給字段

我有課看起來是這樣的:

class exampleClass 
{ 
    string 1 = "Sth1"; 
    string 2 = "Sth2"; 
    string 3 = "Sth3"; 
    int tmp; 
} 

,我想在第二類分配領域:

的obj =新ExampleClass中();

obj.tmp = 3;

而在第三級呼叫出這個TMP領域:

if(obj.tmp == 3) show me string number 3 -> "Sth3". 

結論。我不知道如何將此tmp與字符串關聯。我想這將是一個枚舉類型或其他東西。

+0

您需要使用int.Parse(「3」)將字符串編號轉換爲實際整數 – jdweng

回答

2

恕我直言,一個字典應該滿足您的需求

Dictionary<int, string> myDict = new Dictionary<int, string>(); 
myDict.Add(1, "Sth1"); 
myDict.Add(2, "Sth2"); 
myDict.Add(3, "Sth3"); 

string Result = myDict[3]; //Sth3 
0

首先,請注意,1,23不是有效的字段名稱或枚舉名稱。所以我們把它們叫做ABC

enum MyOption { A, B, C } 


class MyClass 
{ 
    public MyOption Option { get; set; } 
} 

var obj = new MyClass(); 
obj.Option = MyOption.A; 

if(obj.Option == MyOption.A) 
{ 
    // ... 
} 
1

對象連續用小的數字關聯的最直接的方法是一個數組或列表:

class exampleClass { 
    // An object associated with int value X goes into X-th position: 
    private static readonly string[] Strings = new[] {"Sth1", "Sth2", "Sth3"}; 
    // Since tmp is used as an index, you need to protect assignments to it: 
    private int tmp; 
    public int Tmp { 
     get { return tmp; } 
     set { 
      if (value < 0 || value >= Strings.Length) { 
       throw new ArgumentOutOfRangeException(); 
      } 
      Tmp = value; 
     } 
    } 
    public string GetString() { 
     return Strings[tmp]; 
    } 
} 

注意添加二傳手爲Tmp,這可以確保調用方不能爲tmp指定一個負值或高於字符串數組中最後一個允許的索引的值。

1

這看起來像數據結構的工作。

你有什麼是多個變量。你想要什麼是一個集合。事情是這樣的:

class ExampleClass 
{ 
    public IList<string> Strings = new List<string> { "Sth0", "Sth1", "Sth2", "Sth3" }; 
} 

然後你就可以通過他們的指數參考要素:

var obj = new ExampleClass(); 
obj.Strings[3] // <--- will be "Sth3" 

如果指數需要在存儲由於某種原因對象,你可以使用int你現在有:

class ExampleClass 
{ 
    public IList<string> Strings = new List<string> { "Sth0", "Sth1", "Sth2", "Sth3" }; 
    public int CurrentIndex; 
} 

和...

var obj = new ExampleClass { CurrentIndex = 3 }; 
obj.Strings[obj.CurrentIndex] // <--- will be "Sth3" 

添加更多的錯誤檢查,提高變量名(因爲考慮到目前的名稱是真的不清楚您的總體目標,即使是在這裏),甚至演變成一個適當的迭代器結構這等