首页 > 解决方案 > XamarinForms/ C# Resx.File SwitchCase

问题描述

我正在 Xamarin.Forms 中创建一个移动应用程序。我正在为我的字符串使用 resx 文件,但我遇到了一种情况,我需要使用 switch case 但 switch 不允许我使用我的 resx 文件中的字符串,因为必须使用常量。我希望我的应用程序将来可能有两种语言,并且用户应该能够在它们之间切换。我发现了一些我应该使用 IF 的帖子,但 switch 更合适。你有这方面的经验吗?

一旦我想用我的标签替换案例,它就不会允许我,因为它需要常量。

//编辑添加的代码

var result = await DisplayActionSheet (Label.Alert, "Cancel", null, new string[] { "Create new", "Use Old" });
            var Name = Guid.NewGuid().ToString() 

            switch (result)
            {
                **case "Create new":**
                    **case Label.CreateNew**
                    {
                        //do something
                    });


                    break;

                case "Use old":
             // do somehing
                    break;

                default:
                    break;
            }

标签: c#xamarin.forms

解决方案


您不能将 SWITCH 语句用于可以更改值的内容。在这种情况下,您必须在 IF 上进行中继。在你的情况下:

If (result == Label.CreateNew)
{
  // do something
}
else if (result == Label.Something)
{
  // do something
}

要更好地理解 switch,请参阅这篇文章,其中作者解释了 switch 语句如何转化为机器代码。


推荐阅读