case when
довольно новый, поэтому многие ответы не касаются его. Пример MSDN о приведении объекта, не используя исходную строку.
switch (catName)
{
case string c when c.StartsWith("Fluffy"):
// DoSomething
break;
}
Это похоже на работу, было бы лучше, если бы вы пропустили часть string c
и просто вместо нее сделали when catName
, Но тогда несколько случаев не работают:
switch (catName)
{
case string c when c.StartsWith("Fluffy"):
case string c when c.StartsWith("Mr"):
// DoSomething
break;
}
Поскольку вы не можете объявить два string c
. Таким образом, вы можете изменить второй, но в итоге получите список строк a, string b, string c et c, который выглядит не очень хорошо.
Идеальным способом было бы конечно что-то вроде:
switch (catName)
{
case when catName.StartsWith("Fluffy"):
...
break;
}
Есть ли элегантный способ решить эту проблему, или просто лучше использовать метод if..else if
?