Elementor Header #8

19. Выражения в определениях

1. Введение

В C# выражения используются для вычисления значений и могут применяться при определении переменных, методов, свойств и других конструкций. Выражение может состоять из констант, переменных, операторов и вызовов методов, возвращая конечный результат.


2. Выражения при объявлении переменных

Переменные можно инициализировать сразу при объявлении с помощью выражений.

Примеры:

				
					int sum = 5 + 10;          // 15
double area = Math.PI * 4; // 12.56
string message = "Hello " + "World"; // "Hello World"

				
			

Можно использовать вызовы методов:

				
					int length = "Hello".Length; // 5

				
			

Ошибка (использование переменной до инициализации):

				
					int x;
Console.WriteLine(x); // Ошибка: переменная x не инициализирована

				
			

3. Выражения в определении методов

Методы могут содержать выражения в теле метода или использовать сокращённую форму (lambda-выражения).

3.1. Обычное определение метода

				
					int Square(int x) 
{
    return x * x;
}

				
			

3.2. Использование выражения в определении метода (сокращённая форма)

Вместо { return выражение; } можно использовать =>.

				
					int Square(int x) => x * x;

				
			

Одинаковый результат, но короче!

4. Выражения в свойствах

4.1. Обычное определение свойства

				
					class Circle
{
    private double radius;
    public double Area // Свойство с логикой
    {
        get { return Math.PI * radius * radius; }
    }
}

				
			

4.2. Сокращённая форма с выражением

				
					class Circle
{
    private double radius;
    public double Area => Math.PI * radius * radius;
}

				
			

5. Выражения в switch (switch-выражения)

Вместо switch с case можно использовать выражения.

5.1. Обычный switch-case

				
					string GetDayType(int day)
{
    switch (day)
    {
        case 6: 
        case 7: return "Выходной";
        default: return "Рабочий день";
    }
}

				
			

5.2. switch-выражение (сокращённый вариант)

				
					string GetDayType(int day) => day switch
{
    6 or 7 => "Выходной",
    _ => "Рабочий день"
};

				
			

Читается проще и занимает меньше места!


6. Лямбда-выражения

6.1. Обычное объявление метода

				
					bool IsPositive(int number)
{
    return number > 0;
}

				
			

6.2. Лямбда-выражение

				
					Func<int, bool> IsPositive = number => number > 0;

				
			

Теперь это переменная, которую можно передавать как параметр!

7. Пример использования выражений

Обычный способ:

				
					class Calculator
{
    public int Add(int a, int b) 
    { 
        return a + b; 
    }
}

				
			

С использованием выражений:

				
					class Calculator
{
    public int Add(int a, int b) => a + b;
}

				
			

Код стал компактнее, а смысл не изменился!

8. Заключение

Выражения позволяют писать компактный и лаконичный код.
Методы и свойства можно сокращать с =>.
Лямбда-выражения делают код более гибким.
switch-выражения упрощают работу с условиями.

Использование выражений делает код более читаемым и элегантным! 🚀

Тестовое задание

Задание:

Создайте консольное приложение на C#, которое:

  1. Определяет метод Square, вычисляющий квадрат числа с помощью сокращённого определения метода.
  2. Определяет свойство Perimeter, вычисляющее периметр квадрата с заданной стороной (используйте =>).
  3. Использует switch-выражение для определения, является ли число положительным, отрицательным или нулём.
  4. Вызывает эти методы и выводит результаты на экран.

Пример решения:

				
					using System;

class Program
{
    // Метод для вычисления квадрата числа
    static int Square(int x) => x * x;

    // Свойство для вычисления периметра квадрата
    class SquareShape
    {
        public int Side { get; set; }
        public int Perimeter => 4 * Side;
    }

    // Определяем число (положительное, отрицательное или ноль)
    static string NumberType(int num) => num switch
    {
        > 0 => "Положительное",
        < 0 => "Отрицательное",
        _ => "Ноль"
    };

    static void Main()
    {
        // Вычисление квадрата числа
        Console.WriteLine("Квадрат числа 5: " + Square(5));

        // Использование свойства
        SquareShape square = new SquareShape { Side = 4 };
        Console.WriteLine("Периметр квадрата: " + square.Perimeter);

        // Проверка типа числа
        Console.WriteLine("Число -3: " + NumberType(-3));
        Console.WriteLine("Число 0: " + NumberType(0));
        Console.WriteLine("Число 7: " + NumberType(7));
    }
}

				
			

Ожидаемый вывод:

				
					Квадрат числа 5: 25
Периметр квадрата: 16
Число -3: Отрицательное
Число 0: Ноль
Число 7: Положительное

				
			

Попробуйте написать этот код самостоятельно, запустить его и изменить значения, чтобы лучше понять, как работают выражения в определениях! 🚀

Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.

logo