uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

C# (C Sharp) programming

C# (C Sharp) programming

Відкрити в Telegram

По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Показати більше

📈 Аналітичний огляд Telegram-каналу C# (C Sharp) programming

Канал C# (C Sharp) programming (@csharp_ci) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 18 065 підписників, посідаючи 7 230 місце в категорії Технології та додатки та 36 482 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 065 підписників.

За останніми даними від 26 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -33, а за останні 24 години на -8, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 18.96%. Протягом перших 24 годин після публікації контент зазвичай збирає 8.27% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 426 переглядів. Протягом першої доби публікація в середньому набирає 1 494 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 0.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як .net, api, логика, архитектура, string.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ”

Завдяки високій частоті оновлень (останні дані отримано 27 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

18 065
Підписники
-824 години
-127 днів
-3330 днів

Завантажуємо дані

Залучення підписників
жовт '26
жовтень '26
+124
в 37 каналах
вересень '26
+117
в 31 каналах
Get PRO
серпень '26
+112
в 4 каналах
Get PRO
липень '26
+85
в 3 каналах
Get PRO
червень '26
+147
в 3 каналах
Get PRO
травень '26
+131
в 2 каналах
Get PRO
квітень '26
+76
в 1 каналах
Get PRO
березень '26
+96
в 23 каналах
Get PRO
лютий '26
+112
в 45 каналах
Get PRO
січень '26
+398
в 132 каналах
Get PRO
грудень '25
+117
в 5 каналах
Get PRO
листопад '25
+318
в 44 каналах
Get PRO
жовтень '25
+84
в 14 каналах
Get PRO
вересень '25
+162
в 37 каналах
Get PRO
серпень '25
+223
в 9 каналах
Get PRO
липень '25
+418
в 77 каналах
Get PRO
червень '25
+293
в 71 каналах
Get PRO
травень '25
+238
в 1 каналах
Get PRO
квітень '25
+191
в 28 каналах
Get PRO
березень '25
+185
в 2 каналах
Get PRO
лютий '25
+210
в 42 каналах
Get PRO
січень '25
+200
в 46 каналах
Get PRO
грудень '24
+416
в 56 каналах
Get PRO
листопад '24
+1 096
в 187 каналах
Get PRO
жовтень '24
+1 800
в 73 каналах
Get PRO
вересень '24
+635
в 199 каналах
Get PRO
серпень '24
+662
в 44 каналах
Get PRO
липень '24
+665
в 53 каналах
Get PRO
червень '24
+1 168
в 60 каналах
Get PRO
травень '24
+565
в 39 каналах
Get PRO
квітень '24
+569
в 45 каналах
Get PRO
березень '24
+709
в 21 каналах
Get PRO
лютий '24
+1 055
в 2 каналах
Get PRO
січень '24
+1 376
в 46 каналах
Get PRO
грудень '23
+608
в 44 каналах
Get PRO
листопад '23
+1 091
в 30 каналах
Get PRO
жовтень '23
+332
в 19 каналах
Get PRO
вересень '23
+352
в 0 каналах
Get PRO
серпень '23
+1 949
в 0 каналах
Get PRO
липень '23
+507
в 0 каналах
Get PRO
червень '23
+1 238
в 0 каналах
Get PRO
травень '23
+1 891
в 0 каналах
Get PRO
квітень '23
+3 025
в 0 каналах
Get PRO
березень '23
+1 858
в 0 каналах
Get PRO
лютий '23
+85
в 0 каналах
Get PRO
січень '23
+113
в 0 каналах
Get PRO
грудень '22
+171
в 0 каналах
Get PRO
листопад '22
+226
в 0 каналах
Get PRO
жовтень '22
+197
в 0 каналах
Get PRO
вересень '22
+170
в 0 каналах
Get PRO
серпень '22
+756
в 0 каналах
Get PRO
липень '22
+82
в 0 каналах
Get PRO
червень '22
+152
в 0 каналах
Get PRO
травень '22
+344
в 0 каналах
Get PRO
квітень '22
+256
в 0 каналах
Get PRO
березень '22
+53
в 0 каналах
Get PRO
лютий '22
+45
в 0 каналах
Get PRO
січень '22
+97
в 0 каналах
Get PRO
грудень '21
+45
в 0 каналах
Get PRO
листопад '21
+1 110
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
27 жовтня0
26 жовтня+1
25 жовтня+2
24 жовтня+6
23 жовтня+3
22 жовтня+1
21 жовтня+1
20 жовтня+4
19 жовтня+4
18 жовтня+9
17 жовтня+7
16 жовтня+7
15 жовтня+5
14 жовтня+3
13 жовтня+9
12 жовтня+4
11 жовтня+8
10 жовтня+2
09 жовтня+5
08 жовтня+5
07 жовтня+7
06 жовтня+11
05 жовтня+9
04 жовтня+8
03 жовтня+2
02 жовтня+1
01 жовтня0
Дописи каналу
💻️️️️️️ Rate Limiting в ASP.NET Core: четыре алгоритма, которые ограничивают нагрузку по-разному. Антон Мартынюк разобрал их
💻️️️️️️ Rate Limiting в ASP.NET Core: четыре алгоритма, которые ограничивают нагрузку по-разному. Антон Мартынюк разобрал их с примерами на C# и сценариями применения. Fixed Window – фиксированное окно Например, 100 запросов за минуту. После сброса счётчика лимит доступен заново. Подвох: 100 запросов перед границей окна и ещё 100 сразу после могут пройти почти одновременно. Sliding Window – скользящее окно Делит окно на сегменты и постепенно освобождает использованные разрешения. Сглаживает всплески на границах окон; точность зависит от размера сегментов. Token Bucket – корзина токенов Каждый запрос расходует токен, запас регулярно пополняется. Позволяет отдельно настроить размер допустимого всплеска и устойчивую интенсивность запросов. Concurrency Limiter – ограничение параллельности Например, не больше пяти одновременно выполняющихся экспортов. Новое разрешение появляется после завершения запроса. Число последовательных запросов в минуту этот алгоритм не ограничивает. В статье есть и практические ловушки: - Именованная политика сама по себе не создаёт отдельный лимит каждому клиенту. Нужны разделы по IP, пользователю или API-ключу. - За reverse proxy необходимо корректно настроить доверенные forwarded headers. - Счётчики хранятся в памяти процесса. Несколько экземпляров приложения не получают общий лимит автоматически. - Ответ 429 и обработку Retry-After нужно настроить явно. https://antondevtips.com/blog/aspnet-core-rate-limiting-algorithms-explained

2
«Ускорь этот C#-код» — полезнее просить ИИ вместе с инструкцией, как измерять результат. BlazingFastDotnet — сборник приёмов
«Ускорь этот C#-код» — полезнее просить ИИ вместе с инструкцией, как измерять результат. BlazingFastDotnet — сборник приёмов оптимизации .NET 10 и 11, упакованный в SKILL.md для ИИ-агентов. Его можно читать и как обычный технический справочник. Внутри: - Поиск узких мест: dotnet-counters, dotnet-trace, Linux perf и анализ машинного кода JIT. - Память и многопоточность: аллокации, GC, конкуренция за блокировки и false sharing. - Настройка выполнения: ThreadPool, сокеты, JIT и параметры NativeAOT. - Оптимизация C#: SIMD, работа со строками и ASP.NET Core. Автор предлагает подключать документ по необходимости, когда появилась конкретная задача ускорения. Порядок работы простой: замерить исходную производительность → найти причину → менять по одному параметру → сохранять только измеримый выигрыш. Часть рекомендаций рассчитана прежде всего на бенчмарки. Настройки могут обменивать память на скорость или увеличивать нагрузку на CPU, поэтому переносить их в продакшен стоит после проверки на своей нагрузке. https://github.com/EgorBo/BlazingFastDotnet
1 764
3
🔐 «Не одобряй собственные расходы» — такое правило нужно проверять на сервере Тайсир Джуде показывает, как защитить MCP-серв
🔐 «Не одобряй собственные расходы» — такое правило нужно проверять на сервере Тайсир Джуде показывает, как защитить MCP-сервер на ASP.NET Core через Microsoft Entra ID. На примере приложения для учёта расходов автор разбирает: • Регистрацию сервера и клиента в Entra ID. • Вход пользователя и проверку JWT-токенов. • Разницу между scope - разрешением приложению действовать от имени пользователя — и ролью, позволяющей одобрять расходы. • Ограничение доступа к отдельным MCP-инструментам и фильтрацию списка доступных tools. Самый показательный момент: пользователь с ролью согласующего может одобрить чужой отчёт, но свой сервер отклонит. Личность определяется по токену, а бизнес-правило проверяется в коде. Модель выбирает, какой инструмент вызвать. Сервер решает, разрешено ли выполнить действие. 📖 https://bitoftech.net/2026/10/13/securing-mcp-server-microsoft-entra-id/ #aspnetcore #dotnet #mcp
2 804
4
⌨️ Магические слова async/await Приглашаем на открытый урок. 🗓 29 ноября в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курс
⌨️ Магические слова async/await Приглашаем на открытый урок. 🗓 29 ноября в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C#-разработчик. Продвинутый уровень». Разберем, как браузер общается с сервером, и создадим работающий HTTP-сервис без Spring и сторонних библиотек. О чем поговорим: ✔️ Как связаны понятия асинхронности и многопоточности ✔️ Синтаксис async/await-конструкций ✔️ Во что компилируется конструкция async/await ✔️ Работа с исключениями при ожидании 🔗 Ссылка на регистрацию: https://otus.pw/DCX1/?erid=2W5zFJeppAM Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1 431
5
🧩 C# с подвохом: одна переменная — сколько запросов к БД? В базе есть просроченные заказы. db.Orders — это DbSet в EF
🧩 C# с подвохом: одна переменная — сколько запросов к БД? В базе есть просроченные заказы. db.Orders — это DbSet<Order> в EF Core, а NotifyAsync к базе не обращается. IEnumerable<Order> late = db.Orders .Where(o => o.DueDate < today); if (late.Any()) { logger.LogWarning( "{Count} late orders", late.Count() ); foreach (var order in late) { await notifier.NotifyAsync(order); } } Сколько раз код обратится к базе и где будет выполняться подсчёт — в SQL или в памяти приложения? Обратите внимание на тип late в первой строке. И изменится ли поведение, если заменить IEnumerable<Order> на var? 👇 Пишите ответ с объяснением.
2 773
6
⚡ Где тормозит .NET-приложение? SharpLsp покажет прямо в VS Code В SharpLsp есть встроенный профилировщик CPU и памяти для C#
⚡ Где тормозит .NET-приложение? SharpLsp покажет прямо в VS Code В SharpLsp есть встроенный профилировщик CPU и памяти для C# и F#. Подключаешься к уже работающему процессу и смотришь, на что приложение тратит ресурсы. Перезапускать и пересобирать его не нужно. После сбора CPU-профиля расширение подсвечивает горячие строки кода, строит flame graph и показывает функции, которые занимают больше всего процессорного времени. Для памяти доступны отслеживание кучи, сравнение снимков и граф ссылок, помогающий понять, что удерживает объекты в памяти. Подозреваемые на утечки отображаются по мере работы приложения. Отдельно устанавливать `dotnet-trace` не требуется. Движку профилировщика нужен runtime .NET 8 или новее, а у целевого процесса должна быть включена диагностика. Проект открытый, под лицензией MIT, работает на Windows, macOS и Linux. https://sharplsp.dev/blog/dotnet-profiler-vs-code-csharp-fsharp/
2 861
7
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1 936
8
🌐 Новый `HttpClient` на каждый запрос? Под нагрузкой это может закончиться исчерпанием портов. IHttpClientFactory создаёт но
🌐 Новый `HttpClient` на каждый запрос? Под нагрузкой это может закончиться исчерпанием портов. IHttpClientFactory создаёт новые экземпляры клиента, но переиспользует обработчики `HttpMessageHandler` и их пулы соединений. Поэтому освобождение клиента, полученного от фабрики, не уничтожает пул после каждого запроса. Три способа использования: • Обычный клиент: CreateClient() для простых сценариев. Общие настройки тоже можно задать при регистрации. • Именованный: CreateClient("github") возвращает клиент с настройками конкретного API. • Типизированный: GitHubClient получает настроенный HttpClient через DI и скрывает детали HTTP за методами сервиса. Например, именованный клиент: services.AddHttpClient("github", client => { client.BaseAddress = new Uri("https://api.github.com/"); client.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0"); }); // При использовании: using var client = factory.CreateClient("github"); Нюанс: типизированный клиент не стоит надолго удерживать в singleton без настройки обновления соединений. Фабрика также не единственный правильный вариант: Microsoft рекомендует и долгоживущий HttpClient с настроенным PooledConnectionLifetime. Главное: управлять временем жизни соединений.
2 077
9
🛠 У .NET появился свой аналог rustup и nvm Microsoft представила dotnetup: менеджер для установки и обновления .NET SDK и ра
🛠 У .NET появился свой аналог rustup и nvm Microsoft представила dotnetup: менеджер для установки и обновления .NET SDK и рантаймов. Пока в публичном превью. Всё устанавливается в папку пользователя, без sudo и прав администратора. Можно держать стабильные версии, превью и ежедневные сборки рядом, а закрепление SDK через global.json сохраняется. Несколько полезных команд: dotnetup init # Настроить окружение dotnetup list # Показать установленные версии dotnetup update # Обновить отслеживаемые версии dotnetup sdk install preview # Установить превью SDK Можно отслеживать обновления внутри конкретной ветки или закрепить точную версию. При обновлении ненужные компоненты очищаются автоматически. https://devblogs.microsoft.com/dotnet/introducing-dotnetup/
2 383
10
Запрос проходит через несколько сервисов, обращается к базе данных и внешним API. Пользователь видит задержку или ошибку, а п
Запрос проходит через несколько сервисов, обращается к базе данных и внешним API. Пользователь видит задержку или ошибку, а по отдельным записям в журналах трудно понять, на каком участке возникла проблема. 20 октября в 20:00 на открытом уроке курса «C# разработчик. Экспертный уровень» разберёте, как OpenTelemetry помогает превратить .NET-приложение из чёрного ящика в наблюдаемую систему. Рассмотрите наблюдаемость и роль трассировок, метрик и журналов событий в исследовании работы приложения. Узнаете, как эти данные помогают получить целостное представление о пути запроса и искать причины ошибок и задержек. На практике добавите средства сбора телеметрии в ASP.NET Core-приложение. Создадите собственные трассировки через ActivitySource и метрики через Meter, подключите автоматический сбор телеметрии для ASP.NET Core и HttpClient. Урок проведёт Михаил Дмитриев. Зарегистрироваться: https://otus.pw/f8Z4/?erid=2W5zFHPwe5P Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
2 313
11
#ПятничныйКвиз
2 349
12
Что на самом деле происходит с вашим async-методом: компилятор C# переписывает его в конечный автомат Meziantou разобрал, во что превращается async-метод после компиляции. Сам метод становится заглушкой: она создаёт структуру-автомат, заводит билдер вроде AsyncTaskMethodBuilder, копирует параметры в поля, ставит состояние -1, вызывает Start и возвращает Task. Вся логика переезжает в MoveNext. В Release автомат это struct, в Debug это class. Пока метод не засыпает, автомат живёт на стеке. Как только он приостанавливается, билдер упаковывает его в кучу. Поле state хранит точку возобновления: -1 значит выполняется, -2 завершён, 0 и выше номер await. В поля уходят только параметры и локальные переменные, которые нужны после await, остальные остаются локальными. Слоты под awaiter выделяются на тип, а не на каждый await, поэтому несколько await на одном типе делят одно поле. Сам await превращается в switch по полю плюс регистрацию продолжения. Если awaiter уже завершён, код идёт дальше без остановки. Если нет, сохраняется состояние и awaiter, вызывается AwaitUnsafeOnCompleted, и MoveNext возвращается. Исключения ловятся сгенерированным try/catch и уходят в SetException, поэтому всплывают на await, а не в месте вызова. До первого незавершённого await метод выполняется синхронно. Бенчмарки автора показывают цену этого механизма: синхронный цикл 2,7 нс, async без реального ожидания 47,9 нс, async с приостановкой на каждой итерации 8820 нс. Разница в сотни раз в горячих циклах заметна, так что await на каждом элементе лучше пересобирать. Мерить стоит только в Release, иначе картина искажается. Источник: https://www.meziantou.net/how-the-csharp-compiler-rewrites-an-async-method.htm
2 453
13
Helm-чарты прямо из C#, без запуска `helm` 🛠 HelmSharp позволяет рендерить шаблоны и управлять релизами Kubernetes внутри .N
Helm-чарты прямо из C#, без запуска `helm` 🛠 HelmSharp позволяет рендерить шаблоны и управлять релизами Kubernetes внутри .NET-приложения. Что умеет: • Загружать чарты из папки и .tgz. • Объединять values.yaml с пользовательскими параметрами. • Упаковывать чарты и работать с HTTP-репозиториями. • Устанавливать, обновлять, откатывать и удалять релизы. • Хранить историю релизов в Kubernetes Secrets, совместимых с Helm v3. Для начала: dotnet add package HelmSharp.Action Поддерживает .NET 8, 9 и 10, лицензия MIT. Пригодится для собственных панелей управления и сервисов деплоя на C#. Совместимость с Helm пока частичная: свои чарты стоит проверить, особенно если они используют сложные шаблонные функции или расширения. https://github.com/GaTTGeng/HelmSharp
3 471
14
Альфа-Банк ищет скиллового коллегу QA Fullstack на C# Предлагаем полную удалёнку или гибридный график – у нас классные ИТ-офисы в Москве, Питере и Екатеринбурге. Что нужно делать – Разрабатывать автотесты на C#. – Запускать функциональные, регрессионные и интеграционные тесты, включая API. – Снижать количество дефектов в диалоге с разработкой и бизнесом. Какие навыки важны – Опыт автоматизации на C# и ручного тестирования от года. – Знание API (SOAP, REST), SQL, основ клиент-серверной архитектуры и тест-дизайна. Условия и развитие – Сильное сообщество QA и C#-разработчиков: можно получить совет и поделиться опытом на митапе и в блоге на Хабре. – Реальная перспектива роста: технический трек развития, в том числе до C#-лида Оставляйте отклик по ссылке.
2 497
15
🧱 Модульный монолит легко потерять одним удобным JOIN. Допустим, модуль заказов напрямую читает таблицы доставки. Теперь изм
🧱 Модульный монолит легко потерять одним удобным JOIN. Допустим, модуль заказов напрямую читает таблицы доставки. Теперь изменение схемы доставки может сломать заказы, хотя в коде всё красиво разложено по модулям. Границы стоит закреплять и в базе: • Отдельная схема и роль PostgreSQL для каждого модуля. • Роль получает права только на свои данные. • В EF Core каждому модулю выделяется собственный DbContext и подключение с его учётными данными. • Чужие данные доступны через API, события или специально опубликованные представления с правами только на чтение. Так случайный запрос к чужой таблице остановит сама база. А выделять модуль в отдельный сервис впоследствии будет проще. Нюанс: отдельная схема и search_path сами по себе доступа не ограничивают. Границу обеспечивают права ролей на схемы и объекты. https://milanjovanovic.tech/blog/how-to-keep-your-data-boundaries-intact-in-a-modular-monolith
3 102
16
Задачка по C# 14: обновили проект на .NET 10, и код молча начал работать иначе Что выведет этот код? var c = new Counter(); c.Value = 5; Console.WriteLine($"{c.Value} {c.Raw} {c.GetRaw()}"); class Counter { private int field = 100; public int Value { get => field; set => field = value; } public int Raw => field; public int GetRaw() => field; } Варианты: A) 5 5 5 😎 5 100 100 C) 5 0 100 D) Код не скомпилируется Ответ: **C) 5 0 100** В C# 14 слово `field` внутри аксессоров свойства стало ключевым. Теперь оно означает **скрытое поле, которое компилятор создаёт для этого свойства**, даже если в классе уже есть член с таким именем. Поэтому в этом коде три разных `field`: ``` Value → своё скрытое поле: записали 5, прочитали 5 Raw → тоже аксессор, но со своим скрытым полем: в него никто не писал, значит 0 GetRaw() → обычный метод, ключевое слово тут не действует, это поле класса: 100 ``` Главная ловушка в строке `public int Raw => field;`. Выглядит как обычный метод-однострочник, но это свойство, а значит get-аксессор. Поле класса со значением 100 здесь вообще не видно. До C# 14 этот же код выводил `5 5 5`: все три обращения шли к одному полю класса. После обновления он компилируется и тихо меняет поведение. Чтобы обратиться к старому полю, внутри аксессоров нужно писать `this.field` или `@field`.
3 324
17
#ПятничныйКвиз
3 358
18
⚡️ Microsoft переработала C# Dev Kit: меньше памяти, быстрее запуск В версии 11.0 шесть процессов объединили в один сервер на
⚡️ Microsoft переработала C# Dev Kit: меньше памяти, быстрее запуск В версии 11.0 шесть процессов объединили в один сервер на Native AOT, добавили кэш проектов и приоритетную загрузку открытого файла. На решении Aspire из 407 проектов Microsoft получила: • готовность открытого файла: 0,47 секунды, ускорение до 180×; • загрузка всего решения: 84,1 → 3 секунды; • сборка после изменения одного C#-файла: 36,1 → 2,1 секунды; • память сервера Dev Kit: 2072 → 316 МБ. Последняя цифра относится только к серверу расширения: память VS Code и языкового сервиса Roslyn в сравнение не входит. Быстрая повторная загрузка использует предварительно созданный кэш. Также появились подсказки и диагностика для .csproj, .props, .targets и C# Doctor для поиска проблем с SDK, восстановлением пакетов и окружением. Версия доступна в Pre-Release. В VS Code откройте страницу C# Dev Kit и выберите Switch to Pre-Release Version. https://devblogs.microsoft.com/dotnet/faster-lighter-csharp-dev-kit/
3 801
19
🛠 Вышел Microsoft.Data.SqlClient 7.1.1 Обновление .NET-драйвера для SQL Server исправляет три неприятных сценария: • Нулевые
🛠 Вышел Microsoft.Data.SqlClient 7.1.1 Обновление .NET-драйвера для SQL Server исправляет три неприятных сценария: • Нулевые decimal-параметры могли вызывать ArgumentException, если Precision совпадала со Scale. • Пул соединений V2 мог выдавать соединения с истёкшими или почти истёкшими токенами доступа. Теперь срок проверяется перед повторным использованием. Исправление касается приложений, явно включивших V2. • ClearPool и ClearAllPools могли приводить к ошибке при одновременном открытии соединения. Теперь уже начатые запросы могут завершиться, а соединения из очищенного пула больше не используются повторно. https://github.com/dotnet/SqlClient/releases/tag/v7.1.1
3 703
20
Одна задача, три языка: Rust, C# или C++? В курсе Google *Comprehensive Rust* есть упражнение: найти длину трёхмерного вектор+2
Одна задача, три языка: Rust, C# или C++? В курсе Google *Comprehensive Rust* есть упражнение: найти длину трёхмерного вектора, а затем нормализовать его. Формула одна: √(x² + y² + z²). После этого каждую координату делим на полученную длину. На скриншотах хорошо видна разница в стиле: - Rust: iter().fold() собирает сумму квадратов, iter_mut() меняет координаты. - C#: ReadOnlySpan для чтения, Span для изменения и обычный foreach. - C++: std::vector, цикл по значениям для расчёта и по ссылкам для изменения. Для тех, кто пишет на C#: Rust fold(0.0, ...) по смыслу близок к LINQ Aggregate(0.0, ...): оба сворачивают последовательность в одно значение через аккумулятор. Чей вариант вам понятнее с первого взгляда?
7 789