Профессор Си
2.79K subscribers
56 photos
1 video
84 links
Уроки, советы, новости C#.


@anothertechrock
@aldrson
Download Telegram
Вопрос на засыпку. В чем разница между интерфейсом и абстрактным классом в .NET?

Ответ опубликуем вечером.

Пишите в комментариях ваш вариант!

#questions
В чем разница между интерфейсом и абстрактным классом в .NET?

Ответ:

Интерфейс просто объявляет поведение, которым должны обладать реализующие классы. Он объявляет только свойства, методы и события без модификаторов доступа. Все объявленные члены должны быть реализованы.

Абстрактный класс предоставляет частичную реализацию функциональности и некоторые абстрактные/виртуальные члены, которые должны быть реализованы сущностями, которые наследуют класс. Он также объявляет поля.

Интерфейс и абстрактный класс не могут быть инстанцированы.

#questions
Из примера выше, что будет выведено на экран?
Anonymous Quiz
26%
Ford, Volvo, BMW
11%
Toyota, Volvo, BMW
63%
Ford, Toyota, BMW
🤡10👍3
Из примера выше, что будет выведено на экран?
Anonymous Quiz
10%
1
8%
4
29%
5
53%
6
🤡21👍6
Из примера выше, какой тип рефакторинга требуется применить в первую очередь с данным кодом?
Anonymous Quiz
9%
Переименование переменных и методов
59%
Извлечение метода
8%
Извлечение интерфейса
24%
Упрощение условных выражений
Какие циклы существуют в языке C#?
Anonymous Quiz
1%
for
1%
for, while
5%
for, while, do while
4%
fo, while, foreach
90%
for, while, do while, foreach
💩14🥴7😁4🤡4🔥2
Что выведет строка
Console.WriteLine($"{0.12345f:F3}")?
Anonymous Quiz
7%
0.12345
11%
0.12345 на новой строке
60%
0.123
22%
0.123 на новой строке
🥴6👍3🔥1🤡1
Многомерный массив в C# - это...
Anonymous Quiz
2%
int[]
52%
int[,]
42%
int[][]
4%
В C# нет многомерных массивов
👍8👎51
Какие из модификаторов не может иметь абстрактный класс?
Anonymous Quiz
24%
static, internal
52%
sealed, static
24%
sealed, internal
🤡7👍3🔥1🦄1
💡 Shuffle() в действии

До сих пор в LINQ не было встроенного метода для случайного перемешивания коллекций. Разработчикам приходилось использовать разные неэффективные методы.

В новом PR был добавлен метод Shuffle() в IEnumerable<T>. Будем ждать в одном из следующих релизов .NET

Пример будущего кода:
var shuffledItems = items.Shuffle();


Подробности:

🔗 Обсуждение необходимости метода

🔗 Реализация в .NET

🤔 Книги для шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
@rabotacschap - работа по C# и Unity. Подписывайтесь.
⚙️ Гибридное кэширование

Гибридный кэш это баланс между скоростью и масштабируемостью. Он объединяет два уровня хранения данных:

1️⃣ Кэш в памяти. Хранит часто используемые данные локально, обеспечивая моментальный доступ.

2️⃣ Распределенный кэш: Redis, SQL Server Cache. Используется для хранения данных, доступных нескольким серверам.

То есть это метод, при котором данные сначала проверяются в локальном кэше, а если их там нет, запрашиваются из распределенного кэша, например, Redis.

Настройка гибридного кэша в .NET

Чтобы реализовать гибридное кэширование можно использовать HybridCache, который сочетает кэш в памяти и Redis.

1️⃣ Настроить локальный кэш

2️⃣ Добавить Redis как распределенный кэш

3️⃣ Реализовать логику работы с кэшем, используя стратегию «сначала память, потом Redis»

➡️ Подробнее о реализации HybridCache

🤔 Книги для шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
⚙️ Гибридное кэширование

Гибридный кэш это баланс между скоростью и масштабируемостью. Он объединяет два уровня хранения данных:

1️⃣ Кэш в памяти. Хранит часто используемые данные локально, обеспечивая моментальный доступ.

2️⃣ Распределенный кэш: Redis, SQL Server Cache. Используется для хранения данных, доступных нескольким серверам.

То есть это метод, при котором данные сначала проверяются в локальном кэше, а если их там нет, запрашиваются из распределенного кэша, например, Redis.

Настройка гибридного кэша в .NET

Чтобы реализовать гибридное кэширование можно использовать HybridCache, который сочетает кэш в памяти и Redis.

1️⃣ Настроить локальный кэш

2️⃣ Добавить Redis как распределенный кэш

3️⃣ Реализовать логику работы с кэшем, используя стратегию «сначала память, потом Redis»

➡️ Подробнее о реализации HybridCache

🤔 Книги для шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1👌1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра или жизнь? 🤔

Наш канал GameDev разработка для тех кто хочет начать карьеру в Game индустрии и для тех, кто увлекается играми.

Контент:
1. туториалы
2. советы и подсказки
3. визуалка
4. гифки из игр
5. книги

Туториалы по GameDev от первого лица.

Воксельная графика, inspiration контент

Подписывайся на @turbogamedev
🎉21👍1
😴🛠 Паттерн «Состояние»

Паттерн «Состояние» — это поведенческий паттерн проектирования, который позволяет объекту изменять своё поведение в зависимости от текущего состояния. Он помогает избежать большого количества условных операторов и делает код более читаемым, гибким и модульным.

Когда использовать паттерн «Состояние»?
Когда у объекта есть несколько состояний, и его поведение зависит от текущего состояния.
Когда в коде слишком много if-else или switch-case, которые проверяют состояние объекта.
Когда требуется обеспечить легкое добавление новых состояний без изменения существующего кода.

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

Недостатки паттерна
Увеличение числа классов, так как каждое состояние требует отдельной реализации.
Может быть избыточным для простых сценариев.

🤔 Книги для шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
C# 12 in a Nutshell

Автор:
Joseph Albahari
Год издания:
2023

#csharp #en

Скачать книгу
👍31