c# - 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;
}
解决方案
您不能将 SWITCH 语句用于可以更改值的内容。在这种情况下,您必须在 IF 上进行中继。在你的情况下:
If (result == Label.CreateNew)
{
// do something
}
else if (result == Label.Something)
{
// do something
}
要更好地理解 switch,请参阅这篇文章,其中作者解释了 switch 语句如何转化为机器代码。
推荐阅读
- f# - 编译器对静态解析参数进行了比较
- r - 元素明智的乘法,但只选择列
- mongodb - MongoDB 计数与文档实际计数不匹配
- html - 多个画布如何 - 相同的交互
- html - 如何将图像放置在容器内并位于文本下方?
- java - 无法从springboot控制器返回html页面
- python - sklearn Stacking Estimator passthrough 跳过预处理并传递原始数据
- angular - 当 dataService 中的数据发生变化时更新组件
- python - 如何检查一个数字是否为负数?
- python - InvalidArgumentError 断言失败:[predictions must be >= 0] [Condition x >= y did not hold element-wise:] AUC metric only