Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
显示更多📈 Telegram 频道 Библиотека шарписта | C#, F#, .NET, ASP.NET 的分析概览
频道 Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 21 865 名订阅者,在 技术与应用 类别中位列第 6 209,并在 俄罗斯 地区排名第 30 824 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 21 865 名订阅者。
根据 11 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -95,过去 24 小时变化为 -6,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 12.48%。内容发布后 24 小时内通常能获得 7.13% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 729 次浏览,首日通常累积 1 560 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 9。
- 主题关注点: 内容集中在 .net, шарписта, навигация, await, string 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для C#-разработчика в одном канале.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/b60af5a4
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
凭借高频更新(最新数据采集于 12 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
Console.ReadLine() в онлайн-компиляторе C#? Да, звучит как извращение, но давайте углубимся в проблему.
Метод Console.ReadLine() позволяет вашему приложению ожидать ввода пользователя в консоли — это основной инструмент для взаимодействия с пользователем в командной строке.
Но когда вы пытаетесь использовать этот метод в браузерной среде, появляется проблема: браузеры просто не поддерживают работу с консолью напрямую. Атрибут [System.Runtime.Versioning.UnsupportedOSPlatform("browser")] прямо в документации говорит: «Не поддерживайте это в браузере!»
Браузер — это отличное место для быстрых экспериментов, но когда речь идет о полноценной разработке, лучше использовать локальные инструменты: Visual Studio или Visual Studio Code.
🐸 Библиотека шарписта
#sharp_viewvar response = await http.GetAsync(url).WaitAsync(TimeSpan.FromSeconds(5));
Если время ожидания превышает заданный лимит, метод выбросит исключение. Поэтому важно правильно обрабатывать эту ситуацию, решая, нужно ли повторить запрос или применить стратегию отката.
🐸 Библиотека шарписта
#sharp_viewПока одни ждут «идеальный момент», другие просто учатся. А потом берут ваши офферы.⚡️ Пока скидка действует, апдейтни свои навыки
NullReferenceException в проде.
Лучше упасть сразу — с понятным сообщением, чем потом искать, где всё пошло не так.
Как избежать ошибки:
_ = arg ?? throw new ArgumentNullException(nameof(arg));
Это fail-fast подход: программа ломается там, где ошибка реально возникла, а не через пять вызовов.
Полезно для входных параметров, обязательных зависимостей и DTO, пришедших из вне.
🐸 Библиотека шарписта
#sharp_viewasync Task<int> GetDataAsync()
{
var data = await FetchAsync();
return data.Length;
}
вы можете думать, что это «всего лишь ожидание задачи». Но на самом деле компилятор C# превращает этот метод в state machine — конечный автомат, который управляет переходами между состояниями выполнения.
State machine — это структура, которая:
• хранит текущее состояние выполнения программы, например, до await, после await или завершено,
• знает, в какое состояние перейти дальше, когда наступает внешнее событие например, завершение Task.
Проще говоря, компилятор разворачивает ваш линейный асинхронный код в набор состояний + переключатель между ними.
Что делает компилятор
При компиляции метода с await создаётся вспомогательный класс, реализующий интерфейс IAsyncStateMachine.
Если упростить, то наш пример превращается примерно в:
private struct GetDataAsyncStateMachine : IAsyncStateMachine
{
public int _state;
public AsyncTaskMethodBuilder<int> _builder;
private TaskAwaiter<string> _awaiter;
public void MoveNext()
{
try
{
if (_state == 0)
{
// после await
var result = _awaiter.GetResult();
_builder.SetResult(result.Length);
return;
}
var task = FetchAsync();
if (!task.IsCompleted)
{
_state = 0;
_awaiter = task.GetAwaiter();
_builder.AwaitUnsafeOnCompleted(ref _awaiter, ref this);
return;
}
_builder.SetResult(task.Result.Length);
}
catch (Exception ex)
{
_builder.SetException(ex);
}
}
public void SetStateMachine(IAsyncStateMachine stateMachine) { }
}
Другие примеры использования state machines в C#
• yield return — генерация итераторов IEnumerator
• foreach на async коллекциях — асинхронные итераторы IAsyncEnumerable
Каждый await или yield превращает метод в "автомат", который сам управляет своим ходом выполнения.
🐸 Библиотека шарписта
#il_люминаторpublic int MaxArea(int[] h)
{
int l = 0, r = h.Length - 1, m = 0;
while (l < r)
{
m = Math.Max(m, (r - l) * Math.Min(h[l], h[r]));
if (h[l] < h[r]) l++; else r--;
}
return m;
}
➡️ Попробовать на литкоде
🐸 Библиотека шарписта
#dotnet_challengedotnet new gitignore
Не нужно искать шаблон на GitHub или копировать его вручную — всё доступно из коробки.
🐸 Библиотека шарписта
#sharp_viewDisposeWith для удобной работы с CompositeDisposable, новый TakeUntil(CancellationToken) для управления бесконечными потоками и оператор ResetExceptionDispatchState, решающий проблему с растущими стектрейсом при повторных await.
➡️ Подробнее про обнову
🐸 Библиотека шарписта
#asycn_newsstring.IsNullOrEmpty(str) возвращает true, если строка равна null или имеет длину 0 ("").
string.IsNullOrWhiteSpace(str) идёт дальше: он также учитывает пробелы, табы и переводы строк. То есть " " будет считаться пустой.
Код:
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True
string.IsNullOrWhiteSpace(str) идёт дальше: он также учитывает пробелы, табы и переводы строк. То есть " " будет считаться пустой.
Если нужно проверить только на null и пустую строку — используйте IsNullOrEmpty. Если важно исключить строки, состоящие только из пробелов или невидимых символов — выбирайте IsNullOrWhiteSpace.
🐸 Библиотека шарписта
#sharp_viewstring.IsNullOrEmpty(str) возвращает true, если строка равна null или имеет длину 0 ("").
string.IsNullOrWhiteSpace(str) идёт дальше: он также учитывает пробелы, табы и переводы строк. То есть " " будет считаться пустой.
Код:
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True
string.IsNullOrWhiteSpace(str) идёт дальше: он также учитывает пробелы, табы и переводы строк. То есть " " будет считаться пустой.
Если нужно проверить только на null и пустую строку — используйте IsNullOrEmpty. Если важно исключить строки, состоящие только из пробелов или невидимых символов — выбирайте IsNullOrWhiteSpace.
🐸 Библиотека шарписта
#sharp_viewvar dict = new Dictionary<object, string>();
dict[1] = "int";
dict[1L] = "long";
dict[1.0] = "double";
Console.WriteLine(dict.Count);
Console.WriteLine(dict[1 ]);
Что выведет код? Пишите в комменты 👇
Ответь спрячем здесь:
3
int
🐸 Библиотека шарписта
#dotnet_challenge
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
