Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уроки С#.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
346 Кб
Скачать
☆

Var сохраняет принцип строгой типизации в Си-шарп. Это означает, что после того, как для переменной уже был определен тип, в нее нельзя записать данные другого типа:

static void Main(string[] args) {    var number = 5;    number = "some text"; // ошибка, number определен как int }

Ключевое слово var следует использовать в первую очередь с LINQ выражениями (при работе с базами данных)

static void Main(string[] args) {   var query = from s in bdContext.Students select s; }

О LINQ мы будем говорить позже. Ключевое слово var имеет ограничения по его использованию - var не может быть в качестве: - поля класса - аргумента функции - возвращаемого типа функции - переменной, которой присваивается null Нововведение var является достаточно противоречивым среди разработчиков на C#, некоторые используют его где только возможно, другие его избегают (код становится плохо читаемым). Ссылочные типы Все типы данных, о которых мы говорили выше, являются структурными. Также существуют ссылочные типы. Из базовых типов к ссылочным относятся object и string. Тип object является базовым для всех остальных типов данных. Типу string соответствует строка символов Unicode. Пример использования типа string.

static void Main(string[] args) {    string hello = "Hello!";    Console.WriteLine(hello);  }

Структурные типы данных в Си-шарп хранятся в стеке. Для этих данных зарезервирована область в стеке. Стек — это структура данных, которая сохраняет элементы по принципу «последним пришёл — первым вышел» . Примером из жизни служит стопка тарелок. Скорость работы со стеком гораздо выше, чем с оперативной памятью, следовательно, использование стека повышает скорость работы программы. Ссылочные типы хранятся в куче.  Куча — это область динамической памяти, которая выделяется приложению для хранения данных (например объектов). Доступ к данным в куче осуществляется медленнее, чем к стеку. Переменные ссылочных типов хранят ссылки на данные. К ссылочным типам относятся классы, интерфейсы, делегаты и массивы. Больше об этом читайте в уроке Ссылочные типы и типы значений в Си-шарп. Домашнее задание Создайте новый проект или откройте предыдущий, объявите несколько переменных различных типов, примените явное и неявное преобразование. Создайте константную переменную, попробуйте изменить ее значение. PS. Не забываем подписываться на обновления по электронной почте в форме ниже

Арифметические и логические операции в Си-шарп

В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить любую программу. Все операции делятся на два типа: унарные и бинарные. К унарным относятся операции, в которых участвует один операнд. В бинарных операциях – два операнда. Операнд – это данные, которые принимают участие в операции. Например, оператор сложения «+» – бинарный 2+3, здесь операндами являются числа 2 и 3. Список бинарных арифметических операций приведен в таблице:

Операция

Запись

Сложение

a + b

Вычитание

a - b

Деление

a / b

Умножение

a * b

Нахождение остатка от деления

a % b

При делении двух целых чисел результатом также будет целое число. Например при делении 9/5 результатом будет число 1. Чтобы получить точный результат с десятичной точкой, нужно чтобы делимое и/или делитель были типа float или double. Например, при делении 9 / 5f (суффикс f указывает, что данная константа типа float) результатом будет 1.8. Оператор «%» возвращает остаток от деления. Результатом операции 9 % 5 будет 4. Примером применения оператора «%» может быть процесс проверки числа на четность. Для этого мы ищем остаток от деления числа на 2. Если число четное, результатом будет 0, если нечетное – 1. Чтобы повысить приоритет операции, используются скобки, как и в обычной арифметике. 2+2*2=6 (2+2)*2=8 При использовании оператора «+» для строк, он выполняет операцию конкатенации. Конкатенация – объединение нескольких объектов (например строк) в один.

static void Main(string[] args) {    string str1 = "Hello", str2 = "World";    Console.WriteLine(str1 + ", " + str2); //выводит на экран "Hello, World" }

Унарные операторы в Си-шарп Унарных арифметических операторов в Си-шарп есть всего два: инкрементация «++» и декрементация «--»; Инкрементация увеличивает операнд на единицу, а декрементация - уменьшает на единицу.

static void Main(string[] args) {    int a = 0, b = 5;    a++; // a=1;    b--; // b=4 }

Инкрементация и декрементация может быть префиксной и постфиксной. При Префиксной форме оператор стоит перед операндом, а при постфиксной-после. Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот - сначала выполнятся все действия, а после увеличится(уменьшится) значение:

static void Main(string[] args) {    int a = 2, b = 3, c, d = 3;    c = a + ++b; // c = 6, сначала инкремент, потом сложение    с = a + d++; // c = 5, сначала сложение, потом инкремент }

Везде где можно использовать инкрементацию/декрементацию стоит это делать, так как она работает быстрее оператора сложения/вычитания. В Си-шарп также есть возможность использования краткой формы выражения:

static void Main(string[] args) {    int a = 2, b = 3; a += b; // равноценно выражению a = a + b;    a -= b; // равноценно выражению a = a - b;    a *= b; // равноценно выражению a = a * b;    a /= b; // равноценно выражению a = a / b;    a %= b; // равноценно выражению a = a % b; }

Класс Math В классе Math собраны все основные тригонометрические функции, функция возведение числа в степень, нахождение квадратного корня и другие. Для возведения числа в степень, используется функция Pow([число], [степень]);

static void Main(string[] args) {    float a, b = 9;    a = (float) Math.Pow(b, 2); // возводим переменную b в степень 2. Pow() возвращает результат в типе данных double, поэтому мы тут применили явное преобразование. Конечно, можно было обойтись без преобразования, объявив переменную a типа double    Console.WriteLine(a); // выводит на экран число 81    Console.ReadKey(); }

Для нахождения квадратного корня служит функция Sqrt([число]); возвращаемый результат также в типе данных double

static void Main(string[] args) {    double a, b = 9;    a = Math.Sqrt(b);    Console.WriteLine(a); // выводит на экран число 3    Console.ReadKey(); }

Для нахождения косинуса и синуса используются cos([угол в радианах]) и sin([угол в радианах]) соответственно. 180 [градусов] = пи [радиан]. Чтобы перевести градусы в радианы, необходимо значение в градусах умножить на Пи и разделить на 180. Число Пи объявлено константой в классе Math.

static void Main(string[] args) {    double a;    a = Math.Cos(60 * Math.PI / 180); // переводим 60 градусов в радианы    Console.WriteLine(a); // выводит на экран 0.5    a = Math.Sin(60 * Math.PI / 180);    Console.WriteLine(a); // выводит на экран 0.866…    Console.ReadKey(); }

Логические операторы в Си-шарп Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения. В Си-шарп есть следующие логические операторы: ! – оператор «НЕ» является унарным и возвращает противоположное значение операнда.

static void Main(string[] args) {    bool a, b = true, c = false;    a = !b; // a = false    a = !c; // a = true }

|| - оператор «ИЛИ» является бинарным и возвращает false только тогда, когда оба операнда равны false, в остальных случаях результат будет true;

static void Main(string[] args) {    bool a, bTrue = true, bFalse = false;    a = bFalse || bFalse; // a = false    a = bFalse || bTrue; // a = true    a = bTrue || bFalse; // a = true    a = bTrue || bTrue; // a = true }

&& - оператор «И» является бинарным и возвращает true только тогда, когда оба операнда равны true, в остальных случаях результат будет false;

static void Main(string[] args) {    bool a, bTrue = true, bFalse = false;    a = bFalse && bFalse; // a = false    a = bFalse && bTrue; // a = false    a = bTrue && bFalse; // a = false    a = bTrue && bTrue; // a = true }

К операторам сравнения относятся:

Оператор

Название

>

больше

<

меньше

>=

больше или равно

<=

меньше или равно

==

равно

!=

неравно

static void Main(string[] args) {    bool a;    int b = 2, c = 3, d = 2;    a = b > c; // a = false    a = b < c; // a = true    a = b >= c; // a = false    a = b >= d; // a = true    a = b == c; // a = false    a = b == d; // a = true    a = b != c; // a = true }

Логические операторы в первую очередь используются в условных операторах, о которых мы поговорим в следующем уроке. Домашнее задание Есть прямоугольный треугольник с катетами а=5, b=7. Найдите площадь треугольника, s=?. Используя теорему Пифагора, найдите длину гипотенузы, с=?. Кроме этого, найдите длину гипотенузы еще и с помощью теоремы косинусов. Угол между катетами, думаю и так понятен, 90 градусов :) Не помните формулу - ищите в поисковике. PS. Буду очень благодарен, если поделитесь с друзьями этой статьей с помощью кнопок социальных сетей в конце поста.