Tag: switch statement

更好地使用HashTable或switch case

我不确定哪一个更好。 我需要解析输入字符串的每个字符并获取字符的替换字符串。 对于某些对象,允许使用所有字母数字字符,因此使用switch / case会导致大量代码并降低可读性和可维护性,但我可以使用静态方法。 使用HashTable也需要大量代码 使用静态方法: private static string EncodeChar(char c) { var symbols = string.Empty; switch (c) { case ‘0’: symbols = “Test”; break; case ‘1’: symbols = “Hello”; break; […] } symbols; } 使用HashTable: private static Hashtable table = CreateTable(); private static Hashtable CreateTable() { var table = new HashTable(); table.Add(‘0’,”Test”); table.Add(‘1’, […]

C#中的开关是空的情况还是下一个非空的?

使用以下代码: case “GETSITES”: case “SITESETUP”: MessageBox.Show(“Help! I am suffering from the Air-Conditioned Nightmare!!!”); // … MessageBox.Show是执行开关值是”GETSITES”还是”SITESETUP” ? 或者仅当开关值为”SITESETUP” ? 由于”GETSITES”没有rest,我想是的,但我不确定。 UPDATE 我想我应该把我的问题描述为: 这两个代码片段在语义上是等价的吗? 片段1 case 0: case 1: // bla bla bla; break; 片段2(伪代码) case 0, 1: // bla bla bla; break;

切换语句示例

如果此文本框的总数为:PostDiscountTextBox.Text = $ 500.00,我们如何使Switch语句声明如果折扣后成本金额介于0.00和999.99之间,则显示一个消息框,其中显示“此金额符合’A’ -100’常旅客里程“和”确定“按钮? 有人会提供一个switch语句的例子吗? 到目前为止我只有这个,我认为它根本没有。 有人会引导我完成这个吗? 谢谢。 switch (PostDiscountCostTextBox.Text) { case (0.00 < && PostDiscountCostTextBox.Text <= 999.00) 感谢所有帮助过的人,但我想弄清楚如何使用一个switch语句来评估基于一系列数值的Post-discount Cost(没有关于if语句)。 是的,很多案例都会被提出,这些将是我的前两个案例。 有人会非常友好地为我提供一个例子,以便我可以填补其余的案例吗? 我有很多。 谢谢。 如果折扣后成本金额介于0.00和999.99之间 ,则会显示一个消息框,其中显示“此金额符合’A-100’常用里程里程”。 和一个“确定”按钮。 不应使用标题栏文本或图标。 如果折扣后成本金额介于1,000.00和1,499.99之间,则会显示一个消息框,其中显示“此金额符合’B-500’常用里程里程。” 和一个“确定”按钮。 不应使用标题栏文本或图标。

为什么我需要使用rest?

我想知道为什么C#要求我在switch语句中使用break ,尽管根据定义不允许使用fall-through语义。 因此,编译器可以在每个case -block结束时生成break并省去麻烦。 但是,有一种情况(已在本网站上讨论过),我可以提出这可能是明确使用break的原因: switch (foo) { case 0: case 1: bar(); break; default: break; } 这里,如果foo的值为0或1,则调用方法bar() 。 如果编译器本身会生成break语句,那么这个选项会在最真实的意义上break 。 这是它,这是为什么rest是强制性的还是有其他正当理由?

在C#中无法在交换机中使用小数范围?

我刚刚开始学习C#而且我已经陷入了一些非常基本的问题。 对于我的第一个“应用程序”,我以为我会选择简单的东西,所以我决定使用BMI计算器。 BMI计算为十进制类型,我现在尝试在switch语句中使用,但是十进制小数不能在交换机中使用? 对此,C#解决方案是什么: decimal bmi = calculate_bmi(h, w); switch (bmi) { case 25: bmi_description = “overweight”; case > 30: bmi_description = “very overweight”; case > 40: bmi_description = “extreme overweight”; break; }

方法工厂 – 案例与反思

前几天我遇到了一些代码,我想知道这是否是最好的方法。 我们有一个方法,从一些Web表单数据中获取一个字符串,根据传入的字符串对某个对象执行操作。目前,它使用reflection来计算要采取的操作,但我想知道switch语句是否会更好。 例: 编辑:我为Lucerno指出的代表添加了第三个选项 public class ObjectManipulator { private void DoX(object o) { } private void DoY(object o) { } private void DoZ(object o) { } public void DoAction(string action, object o) { switch (action) { case “DoX”: DoX(o); break; case “DoY”: DoY(o); break; case “DoZ”: DoZ(o); break; default: throw new Exception(string.Format( “Cannot locate action:{0}”, […]

为什么需要在switch语句的最后一个标签后放置?

当然编译器知道它是switch语句的最后一个标签?

切换案例,检查C#3.5中的范围

在C#中, switch语句不允许case跨越值范围。 我不喜欢为此目的使用if-else循环的想法,所以有没有其他方法来检查C#中的数值范围?

在C#中重构大型交换机的建议

我在C#/ Winforms中有一个应用程序,它允许用户在网格上放置对象以创建游戏关卡。 它有几个工具用于放置瓷砖/灯/门/实体等。目前我只使用枚举来存储当前选定的工具,并有一个switch语句来运行每个工具代码。 随着我一直在为应用程序添加更多工具,它开始变得像意大利面一样,有很多重复的代码。 这是我的编辑器类中的鼠标按下function的缩减版本: public void OnEditorViewMouseDown(Point mousePos) { // Check if the click is out of bounds. if (IsLocationOOB(mousePos)) return; if (CurrentTool == ToolType.GroundTile) { // Allow drags along whole tiles only. m_DragManager.DragType = DragManager.DragTypeEnum.Tile; m_DragManager.StartDrag(mousePos); } else if (CurrentTool == ToolType.WallTile) { // Allow drags along grid edges only. m_DragManager.DragType = DragManager.DragTypeEnum.Edge; […]

C#switch variable initialization:为什么这段代码不会导致编译器错误或运行时错误?

… case 1: string x = “SomeString”; … break; case 2: x = “SomeOtherString”; … break; … 有没有我不了解C#中的switch语句? 为什么在使用案例2时这不是错误? 编辑:此代码有效,不会引发错误。