Channel: C# (C Sharp) programming
Что выведет на экран этот код?
Anonymous Poll
27%
System.String
24%
System.Int32
9%
System.Object
23%
Возникнет ошибка компиляции
17%
🥒
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет на экран этот код?
Anonymous Quiz
36%
derivedFoo, baseFoo, Base, Derived
19%
derivedFoo, Derived, baseFoo, Base
14%
Derived, derivedFoo, Base, baseFoo
10%
Derived, Base, derivedFoo, baseFoo
21%
🥒
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() + " ");
}
}
Ответ:
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
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
Сообщество Silk.NET анонсировало работу над третьей версией своего фреймворка — амбициозным переосмыслением того, как должны работать низкоуровневые .NET-биндинги для графики и мультимедиа.
Особенность проекта всегда заключалась в кроссплатформенности и минимальных накладных расходах при работе с GPU. В 3.0 разработчики обещают переработанную систему биндингов и улучшенную интеграцию с современными .NET-стэками.
🤖 GitHub
@csharp_ci
🚀 SuperSocket —высокопроизводительный фреймворк для сетевых приложений на .NET. В отличие от стандартных решений, он предлагает готовую инфраструктуру для работы с TCP, UDP и WebSocket, скрывая сложности низкоуровневых операций за простым API.
Проект имеет модульную архитектуру с поддержкой middleware и встроенной системой команд, что позволяет легко адаптировать его для разных сценариев. Интеграция с DI-контейнером .NET и кроссплатформенность делают данный инструмент универсальным выбором для современных приложений.
🤖 GitHub
@csharp_ci
Проект имеет модульную архитектуру с поддержкой middleware и встроенной системой команд, что позволяет легко адаптировать его для разных сценариев. Интеграция с DI-контейнером .NET и кроссплатформенность делают данный инструмент универсальным выбором для современных приложений.
🤖 GitHub
@csharp_ci
Наглядные картинки и короткие видео - мы расскажем о всех секртетах 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
Особенность инструмента в его ориентации на корпоративные задачи: от интеграции с мессенджерами до работы с базами данных. Проект поддерживалось ChatGPT, Gemini, Claude и других LLM через единый интерфейс, встроенный UI на SvelteKit и инструменты для оценки работы моделей.
🤖 GitHub
@csharp_ci
Переименование .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
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
Microsoft внедрила автоматическую публикацию и обновление NuGet-пакетов для .NET MAUI библиотек с помощью GitHub Actions. Это сделает экосистему библиотек MAUI более стабильной, прозрачной и предсказуемой.
✨ Что изменилось:
- Автоматизирован процесс сборки и публикации через CI/CD pipeline
- Обновления появляются на NuGet быстрее, без ручных шагов
- Все исходники библиотек MAUI открыты на GitHub, с привязкой к actions-логам
Упрощено тестирование новых версий через pre-release пакеты
📚 Для разработчиков это значит:
- легче отслеживать новые версии и багфиксы
- быстрее интегрировать свежие фичи MAUI в свои проекты
- можно сразу видеть изменения в GitHub Actions workflow
GitHub Actions теперь ключевая часть поставки .NET MAUI — публикация пакетов стала автоматизированной, прозрачной и быстрее для всех пользователей.
@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
Особенность проекта кроется в динамической трансляции байт-кода в CIL на лету или статической компиляции в DLL. Это открывает интересные сценарии, например, использование Java-библиотек машинного обучения в .NET-приложениях или интеграция legacy-кода без полного рефакторинга.
🤖 GitHub
@csharp_ci
HTML Embed Code: