Size: a a a

var chat = new Chat();

2020 November 11

VL

Vova Lantsov in var chat = new Chat();
Костя
Привет, совсем недавно начал писать на шарпах и мне интересно, можно ли в таком switch объединить несколько кейсов в один?
int Select3(int op, int a, int b) => op switch
{
   1 => a + b,
   2 => a - b,
   3 => a * b,
   _ => throw new ArgumentException("Недопустимый код операции")
};

Чтоб не 1 => result , а допустим 1, 5, 7 => result.
Могу предположить что можно использовать range (1..4) либо через запятую
источник

VL

Vova Lantsov in var chat = new Chat();
Вот почитал, в шарпе 9 будет 1 or 2 or 3)
источник

В

Владислав in var chat = new Chat();
просто строчный псевдоним or для оператора || сделали?
источник

К

Костя in var chat = new Chat();
Владислав
просто строчный псевдоним or для оператора || сделали?
-
источник

VL

Vova Lantsov in var chat = new Chat();
Владислав
просто строчный псевдоним or для оператора || сделали?
Это новые ключевые слова будут
Вот как пример, вместо
if (!(obj is MyClass))
Будет
if (obj is not MyClass)
источник

VL

Vova Lantsov in var chat = new Chat();
При чём распространяется or только на switch expression, насколько я понимаю. Не вижу смысла заменять устоявшийся ||
источник

К

Костя in var chat = new Chat();
GNU/Vsevolod
op switch {
 var x when
   x == 1 ||
   x == 5 ||
   x == 7 => result,
 _ => ...
}
?
Там чтоб в такой свич несколько значений можно будет 1 or 2 or 3 => … А не так как здесь
источник

К

Костя in var chat = new Chat();
По крайней мере звучит наиболее правдоподобно
источник
2020 November 12

В

Владислав in var chat = new Chat();
источник

К

Костя in var chat = new Chat();
Ну типа не совсем ||
источник

В

Владислав in var chat = new Chat();
ты хочешь сказать что работает только в pattern matching? тип когда => используют?
источник

VL

Vova Lantsov in var chat = new Chat();
Владислав
ты хочешь сказать что работает только в pattern matching? тип когда => используют?
Тут дело не в =>, а в is
источник

К

Костя in var chat = new Chat();
Хочу сказать, что не надо повторять первый аргумент, а он уже, как бы в замыкании, и чтоб сравнивать нужен только второй аргумент. То есть вместо x >= 5 || x =< 6, можно будет написать x is >= 5 or <= 6. Если я конечно правильно понял
источник

rr

razumovsky r in var chat = new Chat();
шарп 9 ?
источник

В

Владислав in var chat = new Chat();
угу
источник

VL

Vova Lantsov in var chat = new Chat();
razumovsky r
шарп 9 ?
Там очень много сахара будет, прям даже почти перебор
источник

В

Владислав in var chat = new Chat();
Vova Lantsov
Тут дело не в =>, а в is
Понял, что ничего не понял, пойду изучу тему
источник

rr

razumovsky r in var chat = new Chat();
Vova Lantsov
Там очень много сахара будет, прям даже почти перебор
ну вот эти паттерн матчинги пздц, запутанная фигня
источник

rr

razumovsky r in var chat = new Chat();
ну и коллизия с оператором is не слабая
источник

VL

Vova Lantsov in var chat = new Chat();
В шарпе 8 уже можно так

switch (value)
{
   case { Property1: { }, Property2: var p2, Property3: var p3 } when p2 + p3 < 5:
   {
       ...
   }
}

Стоит ли говорить, что такое прочитать очень трудно)
источник