Багато різновидів членів struct і класів (виняток передусім становлять поля) можуть використовувати синтаксис члена з тілом у вигляді виразу. Оголошення члена виразом часто дає лаконічніший і зрозуміліший код, ніж традиційні блоки чи інструкції.
Методи й властивості лише для читання належать до членів, які можна визначати з тілом у вигляді виразу.
public int Times3(int input) => input * 3;
public int Interesting => 1729;
Вираз switch може зіставити значення з одним випадком із набору шаблонів і повернути повʼязане значення або виконати повʼязану дію. Звʼязок позначає символ =>. Крім того, кожен шаблон може мати необовʼязкову захисну умову, яку вводить ключове слово when. Щоб вибрати саме цю «гілку» switch, вираз захисної умови має обчислюватися як істина. Випадки (їх ще називають гілками switch) обчислюються в порядку написання, і щойно знайдено збіг, процес уривається, а повʼязане значення повертається.
double xx = 42d;
string interesting = xx switch
{
0 => "I suppose zero is interesting",
3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
3.14 => "π",
42 => "a bit of a cliché",
1729 => "only if you are a pure mathematician",
_ => "not interesting"
};
// => interesting == "a bit of a cliché"
Тернарні оператори дають змогу задавати умови if у виразах, а не в блоках інструкцій. Це перегукується з підходами функційного програмування і часто робить код виразнішим та менш схильним до помилок.
Тернарний оператор поєднує три вирази: умову, за якою йде вираз, який обчислюють і повертають, якщо умова істинна (частина if, яку вводить ?), та вираз, який обчислюють і повертають, якщо умова хибна (частина else, яку вводить :).
int a = 3, b = 4;
int max = a > b ? a : b;
// => 4
Вирази throw - це альтернатива інструкціям throw; зокрема, вони можуть додати виразності тернарним та іншим складеним виразам.
string trimmed = str == null ? throw new ArgumentException() : str.Trim();
Нас попросили вдосконалити трохи застарілого коду, повʼязаного з метеостанцією.
Метеостанція приймає вимірювання, а видає деякі показники, як-от температуру і тиск.
Відрефакторте відповідні методи класу WeatherStation за допомогою членів з тілом виразу. Де доречно, використовуйте тернарні операції та вирази switch, щоб підвищити виразність і, можливо, зменшити кількість помилок.
Переконайтеся, що всі тести і надалі проходять.
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.