Tag: switch statement

C#的switch语句区分大小写。 有没有办法切换它,以便它变得不区分大小写?

C#的switch()语句区分大小写。 有没有办法切换它,以便它变得不区分大小写? ============================== 谢谢,但是,我不喜欢这些解决方案; 因为案例条件是一个变量,我不知道它们是否都是UPPER或更低。

如何重构这个switch语句?

string liquidClass = string.Empty; switch (cmbLiquidClass.Text) { case “LiquidClass1”: liquidClass = Settings.Default.LiquidClass1; break; case “LiquidClass2”: liquidClass = Settings.Default.LiquidClass2; break; case “LiquidClass3”: liquidClass = Settings.Default.LiquidClass3; break; case “LiquidClass4”: liquidClass = Settings.Default.LiquidClass4; break; case “LiquidClass5”: liquidClass = Settings.Default.LiquidClass5; break; case “LiquidClass6”: liquidClass = Settings.Default.LiquidClass6; break; case “LiquidClass7”: liquidClass = Settings.Default.LiquidClass7; break; case “LiquidClass8”: liquidClass = Settings.Default.LiquidClass8; break; […]

你会在long switch / enum声明中使用区域吗?

我最近发现自己需要(是的,需要)在C#代码中定义荒谬的长switch语句和enum声明,但我想知道人们认为将它们分成逻辑子部分的最佳方法。 在我的情况下,枚举值和案例(基于枚举值)都有相当清晰的分组,但我稍微不确定如何在代码中反映这一点。 请注意,在我的代码中,我有大约5组,每组10到30个枚举值/个案。 我能想到的三个含糊不清的选择是: 在声明中定义case / enum值的所有逻辑组周围的#region块(可选地用空行分隔)。 使用它的名称对每个组进行注释,并在每个组名注释前添加一个空行。 什么都不做 – 只需将开关/枚举作为一个巨大的案例/值列表。 你喜欢哪个? 你会分开处理枚举和开关吗? (这对我来说似乎有些奇怪。)现在,我不会说这个问题有任何正确/错误的答案,尽管我仍然非常有兴趣听取一般意见的一致意见。 注1:遗憾的是,我可能有一个非常长的枚举声明50/100 +值的情况是不可避免的(和开关一样),因为我试图写一个词法分析器(tokeniser),这看起来似乎是最合理的方法有几个原因。 注2:我完全清楚在是否在一般代码中使用区域(主要用于构造类)的问题上已经存在几个重复的问题,但我觉得我的问题更加具体,尚未得到解决。

C#7使用空检查切换案例

C#7引入了一个名为patterns的新function,您可以将其与Is-Expression或Switch案例一起使用,如下所示: string str = null; switch(str){ case string x: Console.WriteLine(“string ” + x); break; default: Console.WriteLine(“default”); break; } 并且你会期望它会进入#1的情况,因为它是相同的类型,但它没有。

C#开关与VB案例陈述

我最近从VB切换到C#。 我注意到的一件事是,在C#中,我在使用比较作为案例的一部分时遇到了问题。 我不确定如何用文字解释它,所以这里是我想要做的一个例子。 在VB中,我的代码看起来像这样,并且工作得很好。 Select Case ExamScore Case Is >= 90 Grade = “A” Case Is >= 80 Grade = “B” Case Is >= 70 Grade = “C” Case Is >= 60 Grade = “D” Case Else Grade = “F” End Select 另一方面,在C#中,Visual Studio告诉我“> =”是一个无效的表达式。 switch (examScore) { case >= 90: grade = “A”; break; […]

为什么我不能在范围内的switch语句中使用“常量”?

使用此代码: public partial class Form1 : Form { private static readonly int TABCONTROL_BASICINFO = 0; private static readonly int TABCONTROL_CONFIDENTIALINFO = 1; private static readonly int TABCONTROL_ROLESANDSECURITY = 2; private static readonly int TABCONTROL_INACTIVEINFO = 3; . . . int ActiveTabPage = tabControlWorker.SelectedIndex; switch (ActiveTabPage) { case TABCONTROL_BASICINFO: if (currentNode == “NodeBuckingham”) { } else […]

如何对依赖于Console的switch语句进行unit testing

我是unit testing的新手,我正在使用VS 2010unit testing框架。 我有一个函数可以从用户那里获取一个整数,然后根据用户输入执行不同的函数。 我已经阅读了很多unit testing,但是我没有找到任何能告诉我如何测试switch语句的每个分支的东西。 到目前为止我得到了什么: [TestMethod] public void RunBankApplication_Case1() { using (var sw = new StringWriter()) { using (var sr = new StringReader(“1”)) { Console.SetOut(sw); Console.SetIn(sr); BankManager newB = new BankManager(); newB.RunBankApplication(); var result = sw.ToString(); string expected = “Enter Account Number: “; Assert.IsTrue(result.Contains(expected)); } } } 当调用案例1下的函数时,首先发生的是字符串“输入帐号:”被写入控制台。 但是,这根本不起作用。 我没有正确地将输入传递给控制台吗? 谢谢您的帮助! 编辑:我的RunBankApplication()函数: […]

C#在两个数字之间切换?

我试图制作一个智能切换语句,而不是使用20+ if语句。 我试过这个 private int num; switch(num) { case 1-10: Return “number is 1 through 10” break; default: Return “number is not 1 through 10” } 它说案件不能相互堕落。 谢谢你的帮助!

通过switch语句(有时工作?)

我有一个switch语句,如下所示: switch (condition) { case 0: case 1: // Do Something break; case 2: // Do Something case 3: // Do Something break; } 我收到编译错误,告诉我Control cannot fall through from one case label (‘case 2:’) to another 嗯……是的,你可以。 因为你是从case 0:到case 1: 事实上,如果我删除我的case 2:它是相关的任务,代码编译并将从case 0:到case1: . 那么这里发生了什么,如何让我的案例陈述通过并执行一些中间代码?

开关案例编程实践

enum SQLErrorCode{ OK = 0, PARTIAL_OK = 1, SOMEWHAT_OK = 2, NOT_OK = 3, }; 代码1: int error = getErrorCode(); if((error == SQLErrorCode.PARTIAL_OK) || (error == SQLErrorCode.SOMEWHAT_OK) || (error == SQLErrorCode.NOT_OK) || (error < 0)) callFunction1(); else callFunction2(); 代码2: switch(error){ case SQLErrorCode.PARTIAL_OK: callFunction1(); break; case SQLErrorCode.SOMEWHAT_OK: callFunction1(); break; case SQLErrorCode.NOT_OK: callFunction1(); break; default: callFunction2(); break; […]