2012-12-12 72 views
0

我有問題,將班級信息從班級轉移到班級的最佳方式是什麼。我的意思是,我嘗試使用返回字符串,在列表框中有3個項目,它們被命名爲例如EasyNormalHard然後字符串被命名爲項目。它對我來說效果不好,因爲比我加載的方法,他給我返回字符串,但我不能在其他類中使用它。林做這樣的,在第一類第一創建:將信息從班級轉移到班級的最佳方式#

if(listBox1.SelectedItem.ToString() == "Easy") 
{ 
return "Easy"; 
} 

,然後在第二類:

if(class.string1() == "Easy") 
{ 
Do something. 
} 

它不工作。你們可以幫我嗎?或者這個問題太新手了,我必須學習和搜索更多。

+1

看起來比較小巧。而是返回一個字符串,我建議返回一個枚舉。此外,您可以將信息類傳遞給沒有它的類,然後從屬性中訪問信息。 – Trisped

回答

0

您似乎在這裏問幾個不同的問題。

如何在類之間傳輸信息取決於您正在使用的類的類型以及要傳輸的數據的類型。共享數據最簡單的方法可能是提供數據的方法(作爲返回值,引用參數或返回的包含數據的類)。

除此之外,您需要更具體地說明「不起作用」的含義。我可以看到它會工作,假設它設置正確。但是,它不是非常有效,因爲比較字符串需要比較字符串中的每個字符。定義一個枚舉會更有意義。

public enum Difficulty 
{ 
    Easy, 
    Normal, 
    Hard 
} 

而且比較像這樣:

if(classInstance.Difficulty == Difficulty.Easy) 
{ 
    // Do something. 
} 

當然,你的類將需要確定哪些列表項被選中,將其轉換爲一個枚舉。

+0

我回答的唯一問題是它沒有解決如何將ListBox的ViewState中的字符串(在OP的原始代碼中)轉換回枚舉。否則,我會upvote :) –

1

我寧願使用枚舉而不是「magic strings」。它們是類型安全的,並且錯誤較少。您可以將字符串轉換爲一個枚舉,以及它本身很適合你的問題:

public enum DifficultyEnum { 
     NULL, 
     Easy, 
     Medium, 
     Hard 
    } 

    public DifficultyEnum GetDifficulty() { 
     var difficulty = DifficultyEnum.NULL; 
     var selItem = listBox1.SelectedItem.ToString(); 
     Enum.TryParse<DifficultyEnum>(selItem, out difficulty); 
     return difficulty;   
    } 

然後在您的其他類:

swtich (classInstance.GetDifficulty()) { 
     case Easy: 
      break; 
     case Medium: 
      break; 
     case Hard: 
      break; 

     case NULL: /*Hopefully you don't get here but be defensive and expect that somehow they'll manage to do so =P */ 
      break; 
    } 

編輯:

這是一個問題的偏好,但你也可以使GetDifficulty()成爲一個屬性,而不是像這樣:

public DifficultyEnum Difficulty { 
     get { 
      var difficulty = DifficultyEnum.NULL; 
      var selItem = listBox1.SelectedItem.ToString(); 
      Enum.TryParse<DifficultyEnum>(selItem, out difficulty); 
      return difficulty;   
     } 
    }