我有这段代码:
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等。
答案 0 :(得分:2)
听起来你想要这样的东西:
enum Lang
{
English = 1,
Romaji = 2,
Kana = 3,
Kanji = 4,
}
理想情况下,您还会更改UpdateCardFrontSide()
方法,以及其他任何使用这些“神奇值”的方法,以便您使用Lang
类型代替int
。
如果您可以避免要求名称的特定数值,那就更好了。然后你可以省略声明中的赋值,让C#编译器为你生成值。
我可以发誓你之前已经问过你的问题,但我一直无法找到完全重复的问题。与此同时,您可以查看这个相关问题的非常有用的答案:
答案 1 :(得分: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);