我正在尝试使用switch case
而不是If Else
语句,其中我必须首先检查字符串的长度,并且根据我必须对其进行处理。
switch (mystring.length)
{
case <=25:
{
//do this
break;
}
case <50:
{
//do this
break;
}
default:
break;
}
这是我想要做的一些事情,但无法知道如何将<25
放在案例前面,因为根据开关案例规则它是不合适的。
答案 0 :(得分:15)
对于你的特定情况,使用if / else总是更好,使用switch语句你不能在这种情况下使用条件。看起来您正在检查范围,如果范围是常量,那么您可以尝试以下(如果您想使用switch语句)。
int Length = mystring.Length;
int range = (Length - 1) / 25;
switch (range)
{
case 0:
Console.WriteLine("Range between 0 to 25");
break;
case 1:
Console.WriteLine("Range between 26 to 50");
break;
case 2:
Console.WriteLine("Range between 51 to 75");
break;
}
答案 1 :(得分:5)
这对OP来说真的没什么帮助,但希望它能帮助将来寻找这个的人。
如果您正在使用C#7(在Visual Studio 2017中可用),则可以switch
on a range。
示例:强>
public List<Item> getDbItems()
{
List<Item> dbItems = new ArrayList<>();
EntityTransaction entr=em.getTransaction();
entr.begin();
TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
dbItems = query.getResultList();
em.getTransaction().commit();
return dbItems;
}
答案 2 :(得分:2)
您无法使用switch
执行此操作,但可能有解决方法。
Dictionary<int, Action> actions = new Dictionary<int, Action>()
{
{25,()=>Console.WriteLine("<25")},
{49,()=>Console.WriteLine("<50")},
{int.MaxValue,()=>Console.WriteLine("Default")},
};
actions.First(kv => mystring.length < kv.Key).Value();
答案 3 :(得分:2)
试试这个:
int range = (int) Math.Floor(mystring.Length / 25);
switch (range) {
case 0:
//do this <= 25
break;
case 1:
//do this < 50 & > 25
break;
default:
break;
}