C# Ready | Unity
7.53K subscribers
625 photos
36 videos
313 links
Авторский канал по разработке на C# и Unity.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/csharp_ready
Download Telegram
👩‍💻 Нормализация телефонных номеров в тексте!

Делаем консольную утилиту на C#, которая находит номера, начинающиеся с +7 или 8, и приводит их к единому формату

В этой задаче:

Используем регулярное выражение для поиска номеров с любыми разделителями.

Извлекаем нужные цифры, игнорируя пробелы, скобки и тире.

Форматируем найденные номера в удобный и читаемый вид.


Полезно, когда нужно унифицировать контактную информацию в текстах, базах данных и логах.

➡️ C# Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38🤝75👍2👎1
Возвращаем несколько значений с помощью Tuples и деконструкции!

В C# часто возникает ситуация, когда метод должен вернуть сразу несколько значений. Раньше для этого использовали out‑параметры или создавали отдельные классы и структуры.

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

Для начала подключим нужную библиотеку:
using System;


Теперь опишем метод, который возвращает кортеж из двух значений:
public (int Sum, int Product) Calculate(int a, int b)
{
return (a + b, a * b);
}


Вызовем метод и используем деконструкцию, чтобы сразу получить оба значения:
var (sum, product) = Calculate(3, 4);
Console.WriteLine($"Sum: {sum}, Product: {product}");


Вот что получится при запуске:
Sum: 7, Product: 12


🔥 Благодаря Tuple и деконструкции ты можешь возвращать несколько значений без лишнего кода и out‑параметров.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥13👍7
🤝9🔥64
Что же выведет консоль?
Anonymous Quiz
11%
A
20%
B
47%
C
21%
D
👍94🔥4
👩‍💻 Разбираемся с lock — простой защита от гонок потоков и порчи общих данных!

Когда несколько потоков одновременно меняют одну переменную без синхронизации, результат становится непредсказуемым

Что важно знать:

Оборачивай работу с разделяемым состоянием в lock (locker) { ... }

Держи блокировку минимально короткой: никаких долгих операций, I/O или Thread.Sleep() внутри lock.

Лишняя синхронизация превращается в узкое место производительности.


Поэтому, lock помогает писать стабильный и предсказуемый многопоточный код.

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥237👍6🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Professor Web — это образовательная платформа с теоретическими материалами и примерами!

Здесь вы найдёте базовые руководства по синтаксису языка, подробное описание сборок и отражения, работу с потоками и файлами, сетевое программирование, оптимизацию приложений и встроенные тесты для самопроверки

📌 Оставляю ссылочку: professorweb.ru

C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥4
👩‍💻 Познакомимся с nullable-типами — способом работать с переменными, которые могут не иметь значения!

Они позволяют упростить логику проверки на null, безопасно извлекать значения и подставлять значения по умолчанию без лишнего кода. Отлично подходят для случаев, когда нужно работать с value-типами, но предусмотреть возможность их отсутствия.

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24🤝10👍64
👍4🔥41
Что же выведет консоль?
Anonymous Quiz
19%
A
9%
B
52%
C
20%
D
👍6🔥41
Init-only свойства для безопасной инициализации объекта!

Сейчас научимся задавать значения свойств только при создании объекта — с помощью аксессора init. Удобно для создания неизменяемых структур без лишнего шаблонного кода.

Для начала подключим стандартные библиотеку
using System;


Опишем простой класс Person с двумя свойствами, доступными только для инициализации:
class Person
{
public string Name { get; init; }
public int Age { get; init; }
}


Создадим экземпляр объекта и зададим значения свойств через инициализатор:
var person = new Person
{
Name = "Анна",
Age = 28
};
Console.WriteLine($"{person.Name}, {person.Age} лет");


Попробуем изменить значение после создания объекта — компилятор не даст этого сделать:
person.Age = 29; // Ошибка: свойство доступно только для инициализации


🔥 Init-only свойства позволяют задать значение один раз и гарантируют неизменяемость объекта после создания

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2511👍7🤝1
👩‍💻 Серия роликов для начинающих и не только!

Вы познакомитесь с языком C#: от базового синтаксиса и ООП до создания приложений на WPF, работы с ASP.NET, использования Entity Framework и разработки полноценных проектов для настольных и веб-платформ.

Ссылочка на плейлист: YouTube 🖤


➡️ C# Ready | #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥4👎1