TG Telegram Group Link
Channel: C# (C Sharp) programming
Back to Bottom
🖥 TinyHelpers — это библиотека, разработанная Марко Минервой, которая содержит коллекцию часто используемых вспомогательных методов и классов для .NET! Цель проекта — избежать дублирования кода, предоставляя разработчикам готовые решения для повседневных задач.

🔐 Лицензия: MIT

🖥 Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Wexflow — это мощная платформа для автоматизации рабочих процессов с открытым исходным кодом. Она позволяет автоматизировать задачи, такие как обработка файлов, отправка уведомлений, резервное копирование, интеграция с различными API и многое другое

🌟 Wexflow обладает рядом функций, включая интеграцию с базами данных и облачными сервисами, поддержку различных форматов данных и протоколов, а также собственным приложением для Android!

🔐 Лицензия: MIT

🖥 Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Задача. Что выведет на консоль этот пример на C#?


using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
var funcs = new List<Func<int>>();

// Первая группа лямбд
for (int i = 0; i < 4; i++)
{
funcs.Add(() => i * i);
}

Console.Write("Squares: ");
foreach (var f in funcs)
Console.Write(f() + " ");

Console.WriteLine();

// Вторая группа лямбд с копией переменной
funcs.Clear();
for (int i = 0; i < 4; i++)
{
int j = i;
funcs.Add(() => j * j);
}

Console.Write("SquaresWithCopy: ");
foreach (var f in funcs)
Console.Write(f() + " ");
}
}

Ответ:
Squares: 16 16 16 16
SquaresWithCopy: 0 1 4 9

Объяснение
Первая группа лямбд
Лямбды захватывают переменную i по ссылке. К моменту, когда мы их вызываем в foreach, цикл уже завершился, поэтому i == 4. Каждая лямбда вычисляет 4 * 4 → 16.

Вторая группа лямбд
Внутри цикла для каждого значения i создаётся новая локальная переменная j, и лямбда захватывает именно её. При первой итерации j = 0, при второй j = 1 и т. д. Поэтому j * j даёт 0, 1, 4, 9 соответственно.

Такой приём (захват локальной копии переменной) позволяет избежать «одинообразного» результата и сохранить значение каждой итерации.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Python: hottg.com/pythonl
Linux: hottg.com/linuxacademiya
Собеседования DS: hottg.com/machinelearning_interview
Нерйросети hottg.com/ai_machinelearning_big_data
C++ hottg.com/cpluspluc
Docker: hottg.com/DevopsDocker
Хакинг: hottg.com/linuxkalii
Devops: hottg.com/DevOPSitsec
Data Science: hottg.com/data_analysis_ml
Javascript: hottg.com/javascriptv
C#: hottg.com/csharp_ci
Java: hottg.com/javatg
Базы данных: hottg.com/sqlhub
Python собеседования: hottg.com/python_job_interview
Мобильная разработка: hottg.com/mobdevelop
Golang: hottg.com/Golang_google
React: hottg.com/react_tg
Rust: hottg.com/rust_code
ИИ: hottg.com/vistehno
PHP: hottg.com/phpshka
Android: hottg.com/android_its
Frontend: hottg.com/front
Big Data: hottg.com/bigdatai
МАТЕМАТИКА: hottg.com/data_math
Kubernets: hottg.com/kubernetc
Разработка игр: https://hottg.com/gamedev
Haskell: hottg.com/haskell_tg
Физика: hottg.com/fizmat

💼 Папка с вакансиями: hottg.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: hottg.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: hottg.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://hottg.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://hottg.com/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: hottg.com/memes_prog
🇬🇧Английский: hottg.com/english_forprogrammers
🧠ИИ: hottg.com/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://hottg.com/addlist/BkskQciUW_FhNjEy
🚀 Silk.NET 3.0: грядущая революция в .NET-графике

Сообщество Silk.NET анонсировало работу над третьей версией своего фреймворка — амбициозным переосмыслением того, как должны работать низкоуровневые .NET-биндинги для графики и мультимедиа.

Особенность проекта всегда заключалась в кроссплатформенности и минимальных накладных расходах при работе с GPU. В 3.0 разработчики обещают переработанную систему биндингов и улучшенную интеграцию с современными .NET-стэками.

🤖 GitHub

@csharp_ci
🚀 SuperSocket высокопроизводительный фреймворк для сетевых приложений на .NET. В отличие от стандартных решений, он предлагает готовую инфраструктуру для работы с TCP, UDP и WebSocket, скрывая сложности низкоуровневых операций за простым API.

Проект имеет модульную архитектуру с поддержкой middleware и встроенной системой команд, что позволяет легко адаптировать его для разных сценариев. Интеграция с DI-контейнером .NET и кроссплатформенность делают данный инструмент универсальным выбором для современных приложений.

🤖 GitHub

@csharp_ci
🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux.

Наглядные картинки и короткие видео - мы расскажем о всех секртетах Linux администрирования.

Стоит подписаться: hottg.com/linuxacademiya
Please open Telegram to view this post
VIEW IN TELEGRAM
👾 BotSharp — фреймворк для AI-ассистентов на .NET. Этот open-source фреймворк объединяет чат-ботов, RAG-системы и мультиагентные сценарии в единую платформу с модульной архитектурой.

Особенность инструмента в его ориентации на корпоративные задачи: от интеграции с мессенджерами до работы с базами данных. Проект поддерживалось ChatGPT, Gemini, Claude и других LLM через единый интерфейс, встроенный UI на SvelteKit и инструменты для оценки работы моделей.

🤖 GitHub

@csharp_ci
🖥 PowerShell-скрипт для переименования .NET-проекта

Переименование .NET-проекта — занятие утомительное:
нужно переименовать папки, файлы, неэмспейсы, а также заменить строки внутри .sln и .csproj файлов.

Перед вами PowerShell-скрипт, который автоматизируетпеерименование: он рекурсивно переименовывает папки и файлы и заменяет содержимое внутри:


$ErrorActionPreference = "Stop"

$rootFolder = Resolve-Path -Path "."
$oldName = "Sample.Foo"
$newName = "Sample.Bar"

# Rename files and folders
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse | Sort-Object -Property FullName -Descending) {
$itemNewName = $item.Name.Replace($oldName, $newName)
if ($item.Name -ne $itemNewName) {
Rename-Item -LiteralPath $item.FullName -NewName $itemNewName
}
}

# Replace content in files
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse -Include "*.cmd", "*.cs", "*.csproj", "*.json", "*.md", "*.proj", "*.props", "*.ps1", "*.sln", "*.slnx", "*.targets", "*.txt", "*.vb", "*.vbproj", "*.xaml", "*.xml", "*.xproj", "*.yml", "*.yaml") {
$content = Get-Content -LiteralPath $item.FullName
if ($content) {
$newContent = $content.Replace($oldName, $newName)
Set-Content -LiteralPath $item.FullName -Value $newContent
}
}


@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Задача: Что выведет этот код на C\#?


using System;
using System.Threading.Tasks;

class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("1");
var task = FooAsync();
Console.WriteLine("2");
await task;
Console.WriteLine("5");
}

static async Task FooAsync()
{
Console.WriteLine("3");
await Task.Delay(100);
Console.WriteLine("4");
}
}


Вопрос:
Какой порядок чисел появится в консоли?

👇 Подумай, прежде чем смотреть ответ.



Разбор:

1. Console.WriteLine("1"); → печатает 1

2. var task = FooAsync(); → вызывается FooAsync(), который:

печатает 3

доходит до await Task.Delay(100); и возвращает управление в Main (не дожидаясь задержки)

3. Console.WriteLine("2"); → печатает 2

4. await task; → теперь Main ждёт завершения FooAsync

5. после 100ms продолжает выполнение в FooAsync → печатает 4

6. возвращаемся в Main → печатает 5



🎉 Окончательный вывод:

1
3
2
4
5

📝 Что проверяет задача:

- Понимание работы async/await

- Как работают точки приостановки (suspension points)

- Когда код возвращается в вызывающий метод

#CSharp #AsyncAwait #InterviewQuestion #CodeChallenge

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
💥 .NET MAUI библиотеки теперь автоматически публикуются через GitHub Actions

Microsoft внедрила автоматическую публикацию и обновление NuGet-пакетов для .NET MAUI библиотек с помощью GitHub Actions. Это сделает экосистему библиотек MAUI более стабильной, прозрачной и предсказуемой.

Что изменилось:

- Автоматизирован процесс сборки и публикации через CI/CD pipeline

- Обновления появляются на NuGet быстрее, без ручных шагов

- Все исходники библиотек MAUI открыты на GitHub, с привязкой к actions-логам

Упрощено тестирование новых версий через pre-release пакеты

📚 Для разработчиков это значит:

- легче отслеживать новые версии и багфиксы

- быстрее интегрировать свежие фичи MAUI в свои проекты

- можно сразу видеть изменения в GitHub Actions workflow

GitHub Actions теперь ключевая часть поставки .NET MAUI — публикация пакетов стала автоматизированной, прозрачной и быстрее для всех пользователей.

Подробности: https://devblogs.microsoft.com/dotnet/dotnet-maui-libraries-github-actions/

Примеры: https://github.com/dotnet/maui-samples

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🔮 IKVM — мост между Java и .NET. Инструмент превращает скомпилированные JAR-файлы в .NET-сборки, а также помогает стандартным Java-библиотекам работать как родные для C#.

Особенность проекта кроется в динамической трансляции байт-кода в CIL на лету или статической компиляции в DLL. Это открывает интересные сценарии, например, использование Java-библиотек машинного обучения в .NET-приложениях или интеграция legacy-кода без полного рефакторинга.

🤖 GitHub

@csharp_ci
HTML Embed Code:
2025/07/08 05:18:54
Back to Top