case WORD(sHz[1]) shl 8 + WORD(sHz[2]) of
        $B0A1..$B0C4: result := 'A';
        $B0C5..$B2C0: result := 'B';
        $B2C1..$B4ED: result := 'C';
        $B4EE..$B6E9: result := 'D';
        $B6EA..$B7A1: result := 'E';
      end;c#的switch语句如何实现上边的代码(delphi的case语句)也就是switch语句的case可不可以是一个区间的值?

解决方案 »

  1.   

    C#的switch不支持区间值,这个算法在C#中用switch反而复杂了,不如直接用if...else...
      

  2.   

    switch语句的case不可以是一个区间的值
      

  3.   

    还是用嵌套分支吧。接用if...else if ... else if 
      

  4.   

    switch语句的case不可以是一个区间的值
    不过我记得好像可以是几个并列值
    如:
    case 1,2
          .........
    case 3,4
          .........    
      

  5.   

    C#语法不支持这个功能!
    用if else!
      

  6.   

    if...else if ... else if 吧,C#里面switch不行
      

  7.   

    switch语句的case不可以是一个区间的值
      

  8.   

    只能用
    if
    {
    ...
    }
    else if
    { ...
    }
     
    else
    {
    ...
    }
      

  9.   

    用 if else 
    接分
      

  10.   

    你可以把上面的表达式处理下再丢给switch
    拿80-90
    70-80的分数来说吧,你可以int m=score/10;
    switch(m)
    case:8
      ---;
      break;
    case:7
      ---;
      break;
      

  11.   

    case WORD(sHz[1]) shl 8 + WORD(sHz[2]) of 
            $B0A1..$B0C4: result := 'A'; 
            $B0C5..$B2C0: result := 'B'; 
            $B2C1..$B4ED: result := 'C'; 
            $B4EE..$B6E9: result := 'D'; 
            $B6EA..$B7A1: result := 'E'; 
          end; 
    应该可能这样来做的:class KeyValueClass
    {
     private long m_begvalue;
     public long begvalue{get{return m_begvalue;}}//=0xB0A1;
     private long m_endvalue;
     public long endvalue{get{return m_endvalue;}}//=0xB0C4;
     private string m_KeyValue;
     public string KeyValue{get{return m_KeyValue;}}
     public KeyValueClass(long beginkey,long endkey,string valuestr)
     {
      m_begvalue=beginkey;
      m_endvalue=endkey;
      m_KeyValue=valuestr;
     }}class MapClassManager
    {
     IList<KeyValueClass> m_list=new List<KeyValueClass>();
     public MapClassManger()
     {
       m_list.add<new KeyvalueClass(0x0A1,0xB0C4,"A");
       .....
     }
     public string GetValue(long key)
     {
      //遍历m_list,判断key是否中每个实例的区间,如果在,则终止并返回实例的值,
     }}
      

  12.   

    好处:
     1可以很方便的增加/减少/修改条件
     2代码不难维护
    坏处:
     1效率没有测试过,不知道和if..else的如何
     2对于固定的分支来讲,工作量大
    请各位指正;
      

  13.   

    如果用linq会简单些,把实例放到一个数组中,直接用from .. in ..where ... select...就可以查询得出;如果有时间建议看看《代码大全》的“表驱动法”
      

  14.   

    不支持区间值,用if  else
      

  15.   

    楼主还是直接用if...else嵌套来实现吧!可能会更简单些.
      

  16.   

    不要误导
    if..else超过三层后或三个分支后看起来令人很心烦的,如果以后加入了更多(几十个)的分支,你还用if..else搞定吗?能实现功能只是一方面,而且还及易出错。。
    所以建议大家都看看“表驱动法”