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可不可以是一个区间的值?
$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可不可以是一个区间的值?
不过我记得好像可以是几个并列值
如:
case 1,2
.........
case 3,4
.........
用if else!
if
{
...
}
else if
{ ...
}
else
{
...
}
接分
拿80-90
70-80的分数来说吧,你可以int m=score/10;
switch(m)
case:8
---;
break;
case:7
---;
break;
$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是否中每个实例的区间,如果在,则终止并返回实例的值,
}}
1可以很方便的增加/减少/修改条件
2代码不难维护
坏处:
1效率没有测试过,不知道和if..else的如何
2对于固定的分支来讲,工作量大
请各位指正;
if..else超过三层后或三个分支后看起来令人很心烦的,如果以后加入了更多(几十个)的分支,你还用if..else搞定吗?能实现功能只是一方面,而且还及易出错。。
所以建议大家都看看“表驱动法”