2016-09-25 34 views
-2

我有這樣的代碼:有沒有辦法可以避免在我的代碼中使用硬編碼值?

public partial class SettingsPage : ContentPage 
{ 
    public SettingsPage() 
    { 
     englishSide.GestureRecognizers.Add(new TapGestureRecognizer 
     { 
      App.Database.UpdateCardFrontSide(true, "English"); 
      App.Database.UpdateCardFrontSide(false, "Romaji"); 
      App.Database.UpdateCardFrontSide(false, "Kana"); 
      App.Database.UpdateCardFrontSide(false, "Kanji"); 
     }) 
      }); 

我希望像這樣的東西來替代它:

public partial class SettingsPage : ContentPage 
{ 
    public SettingsPage() 
    { 
     englishSide.GestureRecognizers.Add(new TapGestureRecognizer 
     { 
      App.Database.UpdateCardFrontSide(true, 1); 
      App.Database.UpdateCardFrontSide(false, 2); 
      App.Database.UpdateCardFrontSide(false, 3); 
      App.Database.UpdateCardFrontSide(false, 4); 
     }) 
      }); 

但是,有沒有辦法,我可以利用一個基準或東西,而不是使用數字:1,2,3或4

我想要做的就是使用類似Lang.English或Lang.Romaji等

+3

你只是在尋找一個'enum'嗎? –

+2

[枚舉類型](https://msdn.microsoft.com/en-us/library/cc138362.aspx) –

+2

您可以使用枚舉或資源。 – Alexandr

回答

2

這聽起來像你想的那麼mething這樣的:

enum Lang 
{ 
    English = 1, 
    Romaji = 2, 
    Kana = 3, 
    Kanji = 4, 
} 

理想情況下,你也將改變你的UpdateCardFrontSide()方法,和其他地方,這些「神奇值」時,讓您使用Lang類型,而不是int

如果您可以避免爲名稱指定特定的數值,效果會更好。然後,您可以省略聲明中的任務,並讓C#編譯器爲您生成值。

我可以發誓你的問題已經問過,但我一直無法找到一個確切的副本。在此期間,你可以看一下非常有用的答案來此相關的問題:

What is main use of Enumeration?

0

如果你想在你的代碼中的數值來工作,但你希望它是有意義的,你可以使用枚舉:

enum Language 
{ 
    English = 1, 
    Romaji, 
    Kana, 
    Kanji 
} 

枚舉的默認行爲是由1每個連續枚舉的枚舉標識符,在這種情況下是英語後增加。你可以學習Microsoft docs

更多關於枚舉在另一方面,如果你要使用字符串,而不是,你能避免使用「魔術字符串」通過

public static class Constants 
{ 
    public static string ErrorMessage => "This is an error message"; 
} 

,之後您創建具有靜態屬性的靜態類可以像這樣使用它

ThrowPrettyMessage(Constants.ErrorMessage);