草庐IT

lv_switch

全部标签

c# - 将 string.Contains() 与 switch() 一起使用

我正在做一个我使用的C#应用程序if((message.Contains("test"))){Console.WriteLine("yes");}elseif((message.Contains("test2"))){Console.WriteLine("yesfortest2");}有什么方法可以改变switch()的if()语句吗? 最佳答案 更正[Mr.C]的回答。随着VS2017RC的发布及其对C#7的支持,它的工作方式如下:switch(message){casestringawhena.Contains("test2")

c# 7.0 : switch on System. 类型

没有现有问题可以回答这个问题。在c#7中,我可以直接在System.Type上切换吗?当我尝试时:switch(Type){casetypeof(int):break;}它告诉我typeof(int)需要是一个常量表达式。是否有一些语法糖可以让我避免casenameof(int):并直接比较类型是否相等?nameof(T)在case语句中并不完全好,因为命名空间。因此,尽管名称冲突可能不适用于int,但它将适用于其他比较。换句话说,我正在尝试比这更类型安全:switch(Type.Name){casenameof(Int32):casenameof(Decimal):this.valu

c# - 您如何使该switch语句尽可能快?

2009-12-04更新:有关此处发布的许多建议的概要分析结果,请参见下文!问题考虑以下非常无害,非常简单的方法,该方法使用switch语句返回定义的枚举值:publicstaticMarketDataExchangeGetMarketDataExchange(stringActivCode){if(ActivCode==null)returnMarketDataExchange.NONE;switch(ActivCode){case"":returnMarketDataExchange.NBBO;case"A":returnMarketDataExchange.AMEX;case"B

c# - 为什么 if 语句有效但 switch 语句无效

我正在尝试使用字符串的字符索引和使用this的枚举创建一个switch语句包装器从描述中获取所选枚举的值。它几乎允许您将字符串存储到枚举值。这是我的if语句:if(msgComingFromFoo[1]==Convert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToString())){//foo}这是我的switch语句:switch(msgComingFromFoo[1]){caseConvert.ToChar(Message.Code.FOO_TRIGGER_SIGNAL.EnumDescriptionToStr

c# - 在 C# 中计算 Switch 语句中的表达式

我必须在switch中实现以下内容声明:switch(num){case4://somecode;break;case3://somecode;break;case0://somecode;break;case是否可以让switch语句评估case?如果没有,我该怎么做? 最佳答案 我知道这个话题已经很老了,但如果现在有人仍在C#7中寻找答案,那是有可能的。这是一个例子:switch(value){casevarexpressionwhenvalue=0&&value 关于c#-在C#中

c# - 跳出包含 switch 语句的 while 循环

我无法弄清楚如何跳出包含switch语句的循环。break从switch中跳出,而不是从循环中跳出。对此可能有更优雅的解决方案。我已经实现了一个标志,开始时为true,然后设置为false并结束循环。你能提供更好的解决方案吗?背景:此代码用于条码工作流系统。我们有内置条形码扫描仪的PocketPC。此代码用于其中一项功能。它在整个例程中提示用户输入不同的数据。这件作品允许他们滚动浏览一些库存记录,在PocketPC终端(分页结果)上显示该信息,并允许他们输入“D”表示完成,输入“Q”表示退出。这是当前需要改进的C#示例:do{switch(MLTWatcherTCPIP.Get().T

c# - 从 switch block 中跳出 foreach 循环

如何在switchblock中跳出foreach循环?通常,您使用break,但如果您在switchblock中使用break,它只会让您离开switchblock,foreach循环将继续执行:foreach(varvinmyCollection){switch(v.id){case1:if(true){break;}break;case2;break}}当我需要在switchblock内跳出foreach时,我目前正在做的是设置一个bool值在循环外为true并在每次输入foreach时和进入switchblock之前检查此bool的值。像这样:boolexitLoop;forea

带/不带大括号的 C# Switch 语句....有什么区别?

C#是否始终允许您在case:语句之间的switch()语句中省略大括号?像javascript程序员经常做的那样,省略它们有什么影响?例子:switch(x){caseOneWay:{// 最佳答案 大括号不是必需的,但它们可能会派上用场,以引入新的声明空间。据我所知,这种行为自C#1.0以来就没有改变。省略它们的效果是所有在switch语句内某处声明的变量在所有case分支中从它们的声明点可见。另请参阅EricLippert的示例(帖子中的案例3):Fourswitchoddities埃里克的例子:switch(x){caseO

c# - 如何使 C# Switch 语句使用 IgnoreCase

如果我有一个switch-case语句,其中switch中的对象是字符串,是否可以进行ignoreCase比较?我有例如:strings="house";switch(s){case"houSe":s="window";}s会得到值“window”吗?如何覆盖switch-case语句,以便它使用ignoreCase比较字符串? 最佳答案 一个更简单的方法是在进入switch语句之前将字符串小写,并降低大小写。实际上,从纯粹的极端纳秒级性能的角度来看,upper要好一些,但看起来不太自然。例如:strings="house";swi

c# - 大 Switch 语句 : Bad OOP?

我一直认为大型switch语句是糟糕的OOP设计的症状。过去,我读过讨论这个主题的文章,它们提供了基于OOP的替代方法,通常基于多态性来实例化正确的对象来处理这种情况。我现在的情况是有一个基于来自TCP套接字的数据流的巨大switch语句,其中协议(protocol)基本上由换行符终止的命令组成,后跟数据行,然后是结束标记。该命令可以是100个不同命令中的一个,所以我想找到一种方法将这个庞大的switch语句减少到更易于管理的状态。我进行了一些谷歌搜索以找到我记得的解决方案,但遗憾的是,如今谷歌已成为许多查询的不相关结果的荒地。是否有解决此类问题的模式?关于可能的实现有什么建议吗?我的