Статистика ВК сообщества "C# (C Sharp || Си Шарп) //Школа программирования"

0+

Графики роста подписчиков

Лучшие посты

Еще в С# 8.0 в язык был добавлен “switch expression”, по сути это похожая конструкция на “switch” только с возвращаемым результатом, и более краткой записью, никаких “case” и “break” только сокращенный, не всегда понятный синтаксис.

На скриншоте я попытался разобрать часть синтаксиса связанного с “sw... expr...” (полный код доступен в файле). Так, например в “test 2” мы легко можем проверить свойства объекта на соответствию нашим условиям. В примере “test 3” видно как через “when” можно добавить условие, а в примере “test 4” видно как выглядит множество условий в один “sw... expr...” при этом новый синтаксис (and, or, not) вместо (&&, ||, !=). Мало того “sw...expr...” поддерживает вложения (использование “sw... expr...” внутри другого “sw... expr...”) что видно из примера “test 5” так еще и весь приведенный синтаксис можно объединять.

Страшно даже представить, насколько сложные можно сделать условия в “sw... expr...” и какую сложную для понимания конструкцию можно получить в итоге. При этом в данном посте, были затронуты далеко не все особенности синтаксиса “sw... expr...”. Сахара становится даже слишком много, что может усложнить как понимание, так и написание кода.

95 9 ER 1.8103
Подборка книг по алгоритмам. 😍

Также в комментарии пишите книги, которые бы вы добавили в подборку.

141 0 ER 2.1925
Программирование: типовые задачи, алгоритмы, методы

Эта книга для тех, кто хочет научиться программировать. В ней представлена методика решения типовых задач программирования, не привязанная к конкретному языку. Разъяснения по методике решения задач и программы приведены на школьном алгоритмическом языке. Русский синтаксис делает программы понятными и легко переносимыми на любой язык программирования.

106 1 ER 1.7434
Структуры данных (data structures) C#

1. Связный список (linked list)
2. Стек (stack)
3. Двусвязный и кольцевой список (linked list)
4. Очередь, Дек (Queue, Deque)
5. Множество (Set)
6. Словарь C# (Map или Dictionary)
7. Бинарное дерево (binary search tree, BST)
8. Префиксное дерево или бор (trie)
9. Двоичная куча (binary heap), очередь с приоритетом, сортировка кучей

86 0 ER 1.3648
Довольно таки давно в C# были введены диапазоны, полезный синтаксический сахар, который многие разработчики упускают в своей разработке. Диапазоны по сути это последовательность ограниченная заданными индексами, первый из индексов указывает, что диапазон начинается с него (включая себя же в диапазон), второй индекс указывает, что перед ним заканчивается диапазон (он не входит в сам диапазон).

Очень удобная фишка языка, не нужно городить циклы и прочего, достаточно определить диапазон, например test[1..5], и из коллекции мы получаем под коллекцию (все элементы от первого до пятого индекса). Так же указать, что мы хотим получить последний элемент коллекции, не зная при этом её размер, стало достаточно просто “mass[^1]” .

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

57 35 ER 1.3384
Многие еще не выучили старые версии C#, как выходят новые которые радуют нас синтаксическим сахаром. Не так давно деконструкторы в том или оном виде встречались в C# 7.0, только в кортежах, их можно было разложить на отдельные переменные и использовать в коде.

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

Деконструкторы также присутствуют по умолчанию в record (неизменяемых типах) о которых будет рассказано позже. Шпаргалку с кодом и картинкой прикреплю ниже, чтобы каждый мог поиграться.

52 9 ER 0.9913
Продолжим рассматривать новые возможности C# 9.0. Коснемся абсолютно нового понятия в C#, а именно “record” записи. По сути это ссылочный тип, который имеет краткую запись, и ряд преимуществ перед классами, и структурами в некоторых случаях. Приведу краткий пример, нам нужно определить два небольших объекта с несколькими полями, и в дальнейшем сравнить их, вывести на экран, сделать еще несколько объектов с небольшими отличиями на основе уже существующих, при этом изменять их мы не планируем. Именно для таких вещей существуют “record”, они реализуют по умолчанию операторы == и !=, метод сравнения Equals, деконструктор, метод ToString, метод GetHashCode, ну просто целый набор разных вещей которые бы пришлось реализовывать ручками, этот монотонный однообразный код.

В свою очередь “record” имеет ну просто целую плеяду возможностей: может наследоваться (но только от другой “record”), может быть запечатанным типом, абстрактным, и реализовывать интерфейсы, может иметь краткую запись, может иметь развернутую запись (где его поля будут уже не init, а такими какими вы захотите), на основе “record”, через оператор “with” можно быстро создать копию (с небольшими изменениями) и.т.д. Вместить весь код на картинке про “record” проблематично, лучше я прикреплю файл с огромным примером, где есть объяснения в виде комментариев.

23 0 ER 0.4445
Когда менеджер проекта пришел обсудить незапланированную фичу😆

2 2 ER 0.0825
Всем привет!
Попробуем формат публикации простейших задач по программированию. Приложение консольное. Ответы пишите в комментарии.

🔑Составить программу вывода на экран числа, вводимого с клавиатуры. Выводимому числу должно предшествовать сообщение «Вы ввели».

2 4 ER 0.0908