Tag: switch statement

c#中的多变量开关语句

我想使用一个带有几个变量的switch语句,如下所示: switch (intVal1, strVal2, boolVal3) { case 1, “hello”, false: break; case 2, “world”, false: break; case 2, “hello”, false: etc …. } 有没有办法在C#中做这样的事情? (出于显而易见的原因,我不想使用嵌套的switch语句)。

为什么C#switch语句不允许使用typeof / GetType()?

如下例所示: switch ( myObj.GetType ( ) ) { case typeof(MyObject): Console.WriteLine ( “MyObject is here” ); break; }

C#中的案例声明块级声明空间

有没有理由我错过了case语句中的块不被视为块级声明空间? 我尝试时不断收到错误(变量已经声明) case x: var someVariable = 42; break; case y: var someVariable = 40; break; 但我能做到 case x: try{var someVariable = 42;}catch{} break; case y: try{var someVariable = 40;}catch{} break; 如果C#允许通过语句,那就没有意义,但事实并非如此,我想不出你可以在case语句中声明变量并在该块之外使用它的场景。

重构长切换语句

我在c#中编程,你通过口述命令控制,所以现在我有一个很长的switch语句。 就像是 switch (command) { case “Show commands”: ProgramCommans.ShowAllCommands(); break; case “Close window”: ControlCommands.CloseWindow(); break; case “Switch window”: ControlCommands.SwitchWindow(); break; } 等等 几乎所有情况都只调用一个方法,方法不在一个类中,它们分布在许多类中。 所以问题是,我如何能够将这种转换重构为更优雅的方式?

c#切换问题

我是编程新手并遇到以下代码问题: private string alphaCoords(Int32 x) { char alphaChar; switch (x) { case 0: alphaChar = ‘A’; break; case 1: alphaChar = ‘B’; break; case 2: alphaChar = ‘C’; break; case 3: alphaChar = ‘D’; break; case 4: alphaChar = ‘E’; break; case 5: alphaChar = ‘F’; break; case 6: alphaChar = ‘G’; break; case 7: […]

如何在“可能”类型的对象之间切换?

可能重复: C# – “开启类型”有比这更好的选择吗? 我公司的遗留代码如下 public override Uri GetUri(object obj) { if ((obj is Entry) || (obj is EntryComment)) { // } if (obj is Blog) { // } // if obj is blah blah blah } 这种方法很难看。 我想重构它,但我不知道迭代obj可能的“可能”类型的技术。 我怎么能重构这个? 谢谢。

C# – ‘开启类型’的最佳选择是什么?

可能重复: C# – “开启类型”有比这更好的选择吗? 1.) http://channel9.msdn.com/forums/TechOff/411739-switch-objectGetType-/?CommentID=411995 2.) http://blogs.msdn.com/jaredpar/archive/2008/05/16/switching-on-types.aspx 3.)或者还有更好的方法……? 请反映阅读代码的速度和简便性。

为什么这种开关类型的案例被认为是令人困惑的?

我正在寻找一种方法来重构和简化一个函数,我必须根据输入类类型进行数据排序,并且卡在switch(input.GetType()): 快速搜索让我知道为什么C#switch语句不允许使用typeof / GetType()? 链接到http://blogs.msdn.com/peterhal/archive/2005/07/05/435760.aspx 我阅读了文档,但我没有理由认为情况令人困惑。 来自文章: 不幸的是,与许多“简单”语言function一样,类型切换并不像它第一次出现那么简单。 当你看到一个更重要的,同样重要的例子时,麻烦就开始了: class C {} interface I {} class D : C, I {} switch typeof(e) { case C: … break; case I: … break; default: … break; } 有什么不简单的? 呼叫类型typeof(e)无法返回 – 这是I D和C 它必须返回一个Type而不是一个接口和类类型数组 – Type[] 。 因此class D的类型是D 并且D对应于default:分支。 我错过了什么?

为什么switch for enum接受隐式转换为0但是对于任何其他整数都没有?

有一个: enum SomeEnum { A = 0, B = 1, C = 2 } 现在编译器允许我写: SomeEnum x = SomeEnum.A; switch(x) { case 0: // <— Considered SomeEnum.A break; case SomeEnum.B: break; case SomeEnum.C: break; default: break; } 0被认为是SomeItems.A 。 但我写不出来: SomeEnum x = SomeEnum.A; switch(x) { case 0: break; case 1: // <— Here is […]