Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VB.NET Select…C中等效的Case语句_C#_Vb.net_Vb.net To C# - Fatal编程技术网

C# VB.NET Select…C中等效的Case语句

C# VB.NET Select…C中等效的Case语句,c#,vb.net,vb.net-to-c#,C#,Vb.net,Vb.net To C#,我刚开始使用C,我有几个问题。 有没有任何方法可以像下面这样编写VB.NET Select语句的C等价物 选择Object.Name.ToString 案例名称1 “做点什么 案例名称2 “做点别的吧 其他情况 '执行默认操作 结束选择 任何帮助都将不胜感激 感谢到目前为止的输入,如果我将多个控件挂接到一个事件处理程序(如下所示),并希望对每个控件执行稍微不同的操作,该怎么办 私有子按钮\u单击发件人作为对象,e作为事件参数_ 处理按钮1.单击,按钮2.单击 "做一般活动, 选择CTypesen

我刚开始使用C,我有几个问题。 有没有任何方法可以像下面这样编写VB.NET Select语句的C等价物

选择Object.Name.ToString 案例名称1 “做点什么 案例名称2 “做点别的吧 其他情况 '执行默认操作 结束选择 任何帮助都将不胜感激

感谢到目前为止的输入,如果我将多个控件挂接到一个事件处理程序(如下所示),并希望对每个控件执行稍微不同的操作,该怎么办

私有子按钮\u单击发件人作为对象,e作为事件参数_ 处理按钮1.单击,按钮2.单击 "做一般活动, 选择CTypesender,按钮。名称 案例按钮1.名称 “做点什么 案例按钮2.名称 “做点别的吧 其他情况 “进行德伐特行动 结束选择 端接头 是否有任何方法可以在不使用嵌套ifs的情况下在C中执行上述select语句?

使用语句

switch (object.Name.ToString()) {
  case "Name1":
    break;
    //Do something 
  case "Name2":
    break;
    //Do something else 
  default:
    break;
   //Do the default action 
}

不要忘记,有一个允许您将VB.net转换为C和viceversa的语句。

您将查找switch语句

switch (Object.Name.ToString())
{
   case  "Name1":
     //Do something
     break;
   default:
     //default
     break;
}

请注意,中断是导入的,否则程序将在您的案例中删除。你应该可以在几乎所有的C简介中找到这一点…

随着时间的推移,我发现一些VB.NET Select…Case构造在C中不适用,唯一的解决方法是编写大量的ifs

例如,在VB.NET中,您可以编写:

Dim num作为整数=5 选择案例编号 案例1至10 “做点什么 案例11至20 “再做一件事 其他情况 '执行默认设置 结束选择 但是在C语言中没有开关结构允许你做这种事情。您必须在环形交叉口中这样编码:

int num = 5;

switch (num)
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
        //do something
        break;
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
        //do something else
        break;
    default:
        //do the default
        break;
}
或者,如果您碰巧正在使用由连续值而不是离散值组成的Double或任何类型,则必须使用ifs来获得所需的操作

原因?C的开关需要各种情况下的常数。这与VB.NET的Select Case不同,后者允许写入范围。

使用C7,开关得到了显著增强,现在可以在Case中应用更多条件,尽管它仍然不如VB版本干净。例如,你可以做如下事情:

switch (examScore)
{
  case int es when es >= 90: grade = "A"; break;
  case int es when es >= 80: grade = "B"; break;
  case int es when es >= 70: grade = "C"; break;
  case int es when es >= 60; grade = "D"; break;
  default: grade = "F"; break;
}
摘自/参考:


请注意,如果抛出异常或返回值,则不必指定break关键字。true,但作为首选项,我通常喜欢从方法返回一次,而不是从开关内部返回。由于透视的原因,这只是一个循环。例如,在非数字的情况下,switch语句可能更优越。使用c7,可以在select语句中为range添加条件。开关在C7中得到了显著增强。更多信息请参见我的答案。更新-使用C7可以实现这一点。见下面我的答案。