Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
显示更多📈 Telegram 频道 Библиотека шарписта | C#, F#, .NET, ASP.NET 的分析概览
频道 Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 21 698 名订阅者,在 技术与应用 类别中位列第 5 943,并在 俄罗斯 地区排名第 30 267 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 21 698 名订阅者。
根据 29 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -48,过去 24 小时变化为 -6,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 16.72%。内容发布后 24 小时内通常能获得 7.84% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 3 628 次浏览,首日通常累积 1 702 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 23。
- 主题关注点: 内容集中在 .net, шарписта, навигация, await, string 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для C#-разработчика в одном канале.
Наши курсы: https://clc.to/y3LDtw
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
凭借高频更新(最新数据采集于 30 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
var cache = CacheBuilder
.NewLru<string, MyObject>()
.WithCapacity(1000)
.ExpireAfterAccess(TimeSpan.FromMinutes(5))
.Build();
var value = cache.GetOrAdd("key", k => new MyObject(k));
➡️ Попробовать либу
🐸 Библиотека шарписта
#sharp_viewpublic class Document
{
public string State { get; set; } = "Draft";
public void Publish()
{
if (State == "Draft") State = "Moderation";
else if (State == "Moderation") State = "Published";
else Console.WriteLine("Документ уже опубликован");
}
}
Код со State:
public interface IDocumentState
{
void Publish(Document doc);
}
public class Draft : IDocumentState
{
public void Publish(Document doc) => doc.State = new Moderation();
}
public class Moderation : IDocumentState
{
public void Publish(Document doc) => doc.State = new Published();
}
public class Published : IDocumentState
{
public void Publish(Document doc) => Console.WriteLine("Уже опубликован");
}
public class Document
{
public IDocumentState State { get; set; } = new Draft();
public void Publish() => State.Publish(this);
}
Теперь добавление нового состояния — просто новый класс, без переписывания всей логики.
🐸 Библиотека шарписта
#sharp_viewpublic string GetUserName(User? user)
{
if (user == null)
return "Anonymous";
return user.Name;
}
Плюсы:
• просто и понятно
• работает везде
Минусы:
• легко забыть проверить
• ошибки проявятся только в рантайме
С включённой фичей #nullable enable компилятор начинает помогать:
public string GetUserName(User? user)
{
return user?.Name ?? "Anonymous";
}
• User? явно говорит: объект может быть null
• компилятор подсветит, если забыли проверить
• меньше бойлерплейта, больше читаемости
🐸 Библиотека шарписта
#sharp_viewpublic record User(string Name, int Age);
Отличие от классов
Class сравнивается по ссылке. Два объекта с одинаковыми данными — разные сущности.
Record сравнивается по значению. Два объекта с одинаковыми полями — эквивалентны.
var u1 = new User("Alice", 25);
var u2 = new User("Alice", 25);
Console.WriteLine(u1 == u2); // true
Дополнительные фишки
Записи неизменяемы, но их удобно клонировать с изменением:
var u1 = new User("Alice", 25);
var u2 = u1 with { Age = 26 };
Console.WriteLine(u2); // User { Name = Alice, Age = 26 }
Можно наследовать record-тип:
public record User(string Name, int Age);
public record Admin(string Name, int Age, string Role) : User(Name, Age);
record — это синтаксический сахар, который сокращает код и делает модели данных чище и понятнее.
🐸 Библиотека шарписта
#il_люминаторvar channel = Channel.CreateBounded<int>(5);
// producer
_ = Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
await channel.Writer.WriteAsync(i);
Console.WriteLine($"Produced {i}");
}
channel.Writer.Complete();
});
// consumer
await foreach (var item in channel.Reader.ReadAllAsync())
{
Console.WriteLine($"Consumed {item}");
}
Почему это лучше, чем ConcurrentQueue? Потому что Channel создан сразу с учётом асинхронности. Вам не нужно городить блокировки и таймеры ожидания — достаточно написать await reader.ReadAsync(), и код будет сам по себе масштабироваться без блокировки потоков.
🐸Библиотека шарписта
#sharp_view