草庐IT

language-switching

全部标签

c# - 为什么 "Not all code paths return a value"带有 switch 语句和枚举?

我有以下代码:publicintMethod(MyEnummyEnum){switch(myEnum){caseMyEnum.Value1:return1;caseMyEnum.Value2:return2;caseMyEnum.Value3:return3;}}publicenumMyEnum{Value1,Value2,Value3}我收到错误:“并非所有代码路径都返回一个值”。我不明白switch语句怎么可能永远不会跳转到指定的情况之一。enum能否以某种方式成为null? 最佳答案 毫无疑问myEnum的值将是这些值之一。不

迁移到 .Net4 后出现 C# 错误 "Is not supported by the language"

我正在尝试将我们的网站从.Net3.5迁移到4,我遇到了一个非常奇怪的问题。一旦我以.Net4为目标,在3.5中工作得很好的代码就不再工作了,给我错误"xxxisnotsupportedbythelanguage".TimeZoneInfotzi=!calendarItem.UseUserTimeZone?user.Settings.TimeZoneInfo:l.TimeZoneItem.Info;在那行代码中,错误显示在类型为“System.TimeZoneInfo”的“.TimeZoneInfo”和“.Info”上.user.Settings.TimeZoneInfo属性的定义是:

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# Language : generics, open/closed, bound/unbound, constructed

我正在阅读AndersHejlsberg等人撰写的《C#编程语言》第4版。有几个定义有点曲折:未绑定(bind)的泛型类型:泛型类型声明本身表示未绑定(bind)的泛型类型......构造类型:至少包含一个类型参数的类型称为构造类型。开放类型:开放类型是涉及类型参数的类型。封闭类型:封闭类型是一种非开放类型。未绑定(bind)类型:指非泛型类型或未绑定(bind)泛型。绑定(bind)类型:指非泛型类型或构造类型。[注释]ERICLIPPERT:是的,非泛型类型被认为是绑定(bind)和未绑定(bind)的。问题1,下面我列出的是正确的吗?int//non-generic,closed

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# - 获取 "Tuple element name is inferred. Please use language version 7.1 or greater to access an element by its inferred name."

直到今天,在我们将VisualStudio2017更新到最新的15.3之后,我们的UWP应用程序中的以下代码一直运行良好。privatevoidTest(){vargroups=newListitems)>();varitems=newList{("a",true),("b",false),("c",false)};vargroup=(Guid.NewGuid(),items);groups.Add(group);}在输出窗口中没有错误信息但是这个Tupleelementname'items'isinferred.Pleaseuselanguageversion7.1orgreater

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