Channel: C# (C Sharp) programming
✔ Photino.Blazor.net9-template — это шаблон проекта, разработанный для создания десктопных приложений с использованием Photino.Blazor на платформе .NET 9.
Основные характеристики проекта:
▪ Интеграция с MudBlazor: Шаблон включает руководство по добавлению поддержки MudBlazor, популярного UI-фреймворка для Blazor, что позволяет создавать современные и адаптивные пользовательские интерфейсы.
GitHub
▪ Пошаговая настройка: Репозиторий предоставляет детальные инструкции по созданию и настройке проекта, включая установку необходимых пакетов, конфигурацию файлов и интеграцию с MudBlazor.
▪ Совместимость с .NET 9: Шаблон разработан специально для работы с последней версией платформы .NET, обеспечивая доступ к новейшим функциям и улучшениям.
Цель проекта: Облегчить разработчикам процесс создания кроссплатформенных десктопных приложений, используя Blazor и Photino, с возможностью интеграции современных UI-компонентов через MudBlazor.
🔗 Github
#aspnetcore #blazor
Основные характеристики проекта:
▪ Интеграция с MudBlazor: Шаблон включает руководство по добавлению поддержки MudBlazor, популярного UI-фреймворка для Blazor, что позволяет создавать современные и адаптивные пользовательские интерфейсы.
GitHub
▪ Пошаговая настройка: Репозиторий предоставляет детальные инструкции по созданию и настройке проекта, включая установку необходимых пакетов, конфигурацию файлов и интеграцию с MudBlazor.
▪ Совместимость с .NET 9: Шаблон разработан специально для работы с последней версией платформы .NET, обеспечивая доступ к новейшим функциям и улучшениям.
Цель проекта: Облегчить разработчикам процесс создания кроссплатформенных десктопных приложений, используя Blazor и Photino, с возможностью интеграции современных UI-компонентов через MudBlazor.
🔗 Github
#aspnetcore #blazor
Что выведет на экран этот код?
Anonymous Quiz
41%
One,Two - Two,Four
4%
Three - Two,Four
34%
Three - Six
3%
One,Two - Six
19%
🥒
Forwarded from Machinelearning
Microsoft представила масштабную образовательную инициативу — AI Skills Fest, где каждый может бесплатно освоить навыки работы с ИИ. Программа подходит как новичкам, так и опытным специалистам — от основ ML до работы с Azure и Copilot.
Обучение доступно на 40+ языках, включая русский, а материалы разбиты на модули: введение в ИИ, CV, NLP и создание приложений. Участники, прошедшие курс, получат бейдж для LinkedIn и шанс выиграть один из 50 тысяч сертификационных ваучеров. GitHub также предлагает скидку 50% на экзамен по Copilot для тех, кто завершит их модуль.
Чтобы присоединиться, достаточно зарегистрироваться на сайте Microsoft и выбрать подходящий уровень сложности. Помимо основного блока, доступны хакатоны, форумы и самообучение в удобном темпе.
@ai_machinelearning_big_data
#course #ai #ml #freeeducation
Please open Telegram to view this post
VIEW IN TELEGRAM
Это подборка лучших практик по написанию чистого и понятного кода в Unity. Идеально подойдёт, если вы хотите:
Следуя этим принципам, вы не только ускорите разработку, но и прокачаете свои навыки.
Must-have для всех, кто работает с Unity!
🔗 Github
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Ключевые обновления:
Поддержка C# 14 Preview: Включает nameof для необобщенных типов, первоклассные преобразования Span<T> и упрощенные параметры лямбда-выражений с модификаторами.
Новые инспекции кода: Обнаружение потенциальных проблем, таких как небезопасное использование CancellationToken, неточные чтения потоков, избыточный код в условных операторах и ненужные вызовы .ToString() для перечислений.
Улучшения рефакторинга и форматирования: Возможность переключения <ImplicitUsings> во всем проекте, обновленный рефакторинг параметров с поддержкой кортежей, записей и асинхронных методов, а также новые опции форматирования, включая "chop formatting" и улучшенную обертку комментариев.
Производительность: Новая система интернирования строк снижает использование памяти вдвое, а поддержка Blazor и Razor переработана для более быстрой и стабильной работы, особенно в проектах ASP.NET с большим количеством компонентов.
Поддержка C++ и разработка игр: Включает рефакторинг Inline Macro, поддержку новых расширений GNU, уменьшенное использование памяти для крупных проектов на Unreal Engine и обновленный Clang-Tidy с улучшенной поддержкой GoogleTest.
Интеграция с Unity: Новый плагин для ReSharper предоставляет автодополнение для функций событий Unity и файлов ShaderLab, улучшенную обработку файлов .meta и распознавание неявных использований в префабах и сценах.
Расширение Qodana Team Code Quality: Позволяет интегрировать проекты Qodana Cloud или самохостингованные проекты Qodana в Visual Studio для выявления проблем с кодом, ошибок и уязвимостей непосредственно в IDE.
Для более подробной информации и загрузки релиз-кандидата посетите официальный блог JetBrains.
📌 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет на экран этот код?
Anonymous Quiz
31%
IFoo 1, IBar 2
7%
IFoo 1, MyClass 2
16%
MyClass 1, MyClass 2
6%
MyClass 1, IBar 2
18%
Возникнет ошибка компиляции
4%
Возникнет ошибка времени выполнения
18%
🥒
🚀 .NET 10 Preview 3 уже доступен!
Новая версия приносит мощное обновление для C# — Extension Members:
💡 Теперь можно добавлять в static class расширения не только методов, но и:
▪ 🔹 Статические методы
▪ 🔹 Инстанс-свойства
▪ 🔹 Статические свойства
📦 Это значит, что вы можете "расширять" поведение типов не только логикой, но и дополнительными данными и даже стейтфул-логикой (через свойства).
И всё это — без изменения исходного класса.
🔗 Подробнее:
https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/csharp.md#extension-members
#dotnet #csharp #dotnet10 #devtools #preview
@csharp_ci
Новая версия приносит мощное обновление для C# — Extension Members:
💡 Теперь можно добавлять в static class расширения не только методов, но и:
▪ 🔹 Статические методы
▪ 🔹 Инстанс-свойства
▪ 🔹 Статические свойства
📦 Это значит, что вы можете "расширять" поведение типов не только логикой, но и дополнительными данными и даже стейтфул-логикой (через свойства).
И всё это — без изменения исходного класса.
🔗 Подробнее:
https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/csharp.md#extension-members
#dotnet #csharp #dotnet10 #devtools #preview
@csharp_ci
🔧 Задача на C# для внимательных разработчиков
Что выведет следующий код?
Варианты ответа:
A)
B)
C)
D)Ошибка компиляции
---
✅ Правильный ответ: B
Почему:
Лямбда-функции захватывают переменную по ссылке, а не её значение на каждой итерации. После завершения цикла , и все замыкания ссылаются на одно и то же . Это классическая ловушка замыканий в C#.
@csharp_ci
Что выведет следующий код?
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var actions = new List<Action>();
for (int i = 0; i < 3; i++)
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
action();
}
}
Варианты ответа:
A)
1
2
B)
3
3
C)
0
0
D)Ошибка компиляции
---
✅ Правильный ответ:
Почему:
Лямбда-функции захватывают переменную
i
i == 3
i
@csharp_ci
🚀 Релиз: SQL Formatting Preview в T-SQL Analyzer CLI
В последнем обновлении инструмента T-SQL Analyzer CLI от ErikEJ появилась функция предварительного просмотра форматирования SQL-кода.
✨ Основные возможности:
Автоматическое форматирование T-SQL скриптов с использованием встроенных правил.
Интеграция с анализатором кода, позволяющая одновременно проверять и форматировать скрипты.
Поддержка командной строки, что удобно для автоматизации процессов и интеграции в CI/CD пайплайны.
🔧 Пример использования:
Эта команда проанализирует и отформатирует указанный SQL-скрипт согласно установленным правилам.
📌 Подробнее о новых возможностях и инструкциях по установке читайте в официальной документации.
#sqlserver #tsql #dotnet #cli #devtools
https://github.com/ErikEJ/SqlServer.Rules/tree/master/tools/SqlAnalyzerCli#sql-formatting-preview
@csharp_ci
В последнем обновлении инструмента T-SQL Analyzer CLI от ErikEJ появилась функция предварительного просмотра форматирования SQL-кода.
✨ Основные возможности:
Автоматическое форматирование T-SQL скриптов с использованием встроенных правил.
Интеграция с анализатором кода, позволяющая одновременно проверять и форматировать скрипты.
Поддержка командной строки, что удобно для автоматизации процессов и интеграции в CI/CD пайплайны.
🔧 Пример использования:
tsqlanalyze -i "C:\scripts\proc.sql" --format
Эта команда проанализирует и отформатирует указанный SQL-скрипт согласно установленным правилам.
📌 Подробнее о новых возможностях и инструкциях по установке читайте в официальной документации.
#sqlserver #tsql #dotnet #cli #devtools
https://github.com/ErikEJ/SqlServer.Rules/tree/master/tools/SqlAnalyzerCli#sql-formatting-preview
@csharp_ci
🖼 ImageSharp — мощная библиотека для обработки изображений на C# (.NET)
✅ Поддержка форматов PNG, JPEG, GIF, BMP и др.
✂️ Масштабирование и обрезка изображений
🎨 Фильтры и визуальные эффекты
🌀 Работа с анимированными GIF
🚀 Высокая производительность без лишних зависимостей
📌 Полностью написана на C# и легко интегрируется в любые .NET-проекты.
Идеальный инструмент для тех, кто хочет быстро и качественно работать с изображениями.
🔗 GitHub
@csharp_ci
✅ Поддержка форматов PNG, JPEG, GIF, BMP и др.
✂️ Масштабирование и обрезка изображений
🎨 Фильтры и визуальные эффекты
🌀 Работа с анимированными GIF
🚀 Высокая производительность без лишних зависимостей
📌 Полностью написана на C# и легко интегрируется в любые .NET-проекты.
Идеальный инструмент для тех, кто хочет быстро и качественно работать с изображениями.
🔗 GitHub
@csharp_ci
💡 Задача: Загадочный Кэш
У тебя есть метод, который возвращает последовательность чисел, вычисляемую с задержкой (например, чтение из удалённого ресурса):
Теперь тебе нужно реализовать метод ProcessData(), который:
Вызывает GetSlowData() один раз.
Проходит по данным дважды: сначала фильтрует только чётные, потом считает сумму всех.
Не должен повторно "запрашивать" данные (то есть Fetching data... должен выводиться один раз).
Не должен использовать ToList(), ToArray() или другие методы, загружающие всё в память явно.
🧠 Вопрос с подвохом: Как реализовать ProcessData()?
Напиши реализацию:
🔎 Подсказка
Если ты просто используешь IEnumerable<int> и дважды к нему обращаешься — будет два запроса. Но есть один способ реализовать ленивое кэширование, не загружая всё в память сразу и не повторяя yield return.
Решение:
Если ты просто напишешь вот так:
```csharp
var data = GetSlowData();
var evens = data.Where(x => x % 2 == 0);
var sum = data.Sum();```
то GetSlowData() будет вызван дважды, потому что IEnumerable ленивый — и при каждом новом foreach начинается всё заново. Это видно по двойному выводу Fetching data....
🧠 Цель: пройтись по данным один раз, кэшируя элементы "на лету", и позволить другим перечислениям работать без повторного получения.
✅ Решение: Используем ленивый кеш — с помощью кастомного итератора
```csharp
public static void ProcessData()
{
var cached = new MemoizedEnumerable<int>(GetSlowData());
var evens = cached.Where(x => x % 2 == 0);
var sum = cached.Sum();
Console.WriteLine("Even numbers: " + string.Join(", ", evens));
Console.WriteLine("Sum: " + sum);
}```
А вот реализация ленивого кеширующего MemoizedEnumerable<T>:
```csharp
public class MemoizedEnumerable<T> : IEnumerable<T>
{
private readonly IEnumerator<T> _source;
private readonly List<T> _cache = new();
private bool _sourceFinished = false;
public MemoizedEnumerable(IEnumerable<T> source)
{
_source = source.GetEnumerator();
}
public IEnumerator<T> GetEnumerator()
{
int index = 0;
while (true)
{
if (index < _cache.Count)
{
yield return _cache[index];
}
else
{
if (_sourceFinished || !_source.MoveNext())
{
_sourceFinished = true;
yield break;
}
_cache.Add(_source.Current);
yield return _source.Current;
}
index++;
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}```
🧪 Что происходит
MemoizedEnumerable запоминает каждый элемент один раз при первом проходе.
Следующие проходы используют кэш.
Fetching data... будет вызван только один раз.
💥 Подвох
Большинство подумает, что IEnumerable можно безопасно переиспользовать без сайд-эффектов. Но не тут-то было: без кэширования yield выполнится дважды. Многие Middle+ разработчики ошибаются именно тут.
У тебя есть метод, который возвращает последовательность чисел, вычисляемую с задержкой (например, чтение из удалённого ресурса):
public static IEnumerable<int> GetSlowData()
{
Console.WriteLine("Fetching data...");
yield return 1;
Thread.Sleep(1000);
yield return 2;
Thread.Sleep(1000);
yield return 3;
}
Теперь тебе нужно реализовать метод ProcessData(), который:
Вызывает GetSlowData() один раз.
Проходит по данным дважды: сначала фильтрует только чётные, потом считает сумму всех.
Не должен повторно "запрашивать" данные (то есть Fetching data... должен выводиться один раз).
Не должен использовать ToList(), ToArray() или другие методы, загружающие всё в память явно.
🧠 Вопрос с подвохом: Как реализовать ProcessData()?
Напиши реализацию:
public static void ProcessData()
{
// твой код здесь
}
🔎 Подсказка
Решение:
```csharp
var data = GetSlowData();
var evens = data.Where(x => x % 2 == 0);
var sum = data.Sum();```
то GetSlowData() будет вызван дважды, потому что IEnumerable ленивый — и при каждом новом foreach начинается всё заново. Это видно по двойному выводу Fetching data....
🧠 Цель: пройтись по данным один раз, кэшируя элементы "на лету", и позволить другим перечислениям работать без повторного получения.
✅ Решение: Используем ленивый кеш — с помощью кастомного итератора
```csharp
public static void ProcessData()
{
var cached = new MemoizedEnumerable<int>(GetSlowData());
var evens = cached.Where(x => x % 2 == 0);
var sum = cached.Sum();
Console.WriteLine("Even numbers: " + string.Join(", ", evens));
Console.WriteLine("Sum: " + sum);
}```
А вот реализация ленивого кеширующего MemoizedEnumerable<T>:
```csharp
public class MemoizedEnumerable<T> : IEnumerable<T>
{
private readonly IEnumerator<T> _source;
private readonly List<T> _cache = new();
private bool _sourceFinished = false;
public MemoizedEnumerable(IEnumerable<T> source)
{
_source = source.GetEnumerator();
}
public IEnumerator<T> GetEnumerator()
{
int index = 0;
while (true)
{
if (index < _cache.Count)
{
yield return _cache[index];
}
else
{
if (_sourceFinished || !_source.MoveNext())
{
_sourceFinished = true;
yield break;
}
_cache.Add(_source.Current);
yield return _source.Current;
}
index++;
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}```
🧪 Что происходит
MemoizedEnumerable запоминает каждый элемент один раз при первом проходе.
Следующие проходы используют кэш.
Fetching data... будет вызван только один раз.
💥 Подвох
Большинство подумает, что IEnumerable можно безопасно переиспользовать без сайд-эффектов. Но не тут-то было: без кэширования yield выполнится дважды. Многие Middle+ разработчики ошибаются именно тут.
❓ Что выведет следующий код на C#?
🔢 Варианты ответа:
A)
B)
C)
D)
✅ Правильный ответ:C
💡 Почему?
- и — boxed значения типа , то есть ссылки на два разных объекта в куче.
- сравнивает ссылки, а не значения → .
- вызывает метод для , который сравнивает значения → .
📌 Подвох — в различии и при использовании упакованных типов.
@csharp_ci
using System;
class Program {
static void Main() {
int a = 1000;
int b = 1000;
object x = a;
object y = b;
Console.WriteLine(x == y); // #1
Console.WriteLine(x.Equals(y)); // #2
}
}
🔢 Варианты ответа:
A)
True
B)
False
C)
True
D)
False
✅ Правильный ответ:
💡 Почему?
-
x
y
int
-
x == y
False
-
x.Equals(y)
Equals
int
True
📌 Подвох — в различии
==
.Equals()
@csharp_ci
Что выведет на экран этот код?
Anonymous Poll
27%
System.String
24%
System.Int32
9%
System.Object
23%
Возникнет ошибка компиляции
17%
🥒
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет на экран этот код?
Anonymous Quiz
36%
derivedFoo, baseFoo, Base, Derived
19%
derivedFoo, Derived, baseFoo, Base
14%
Derived, derivedFoo, Base, baseFoo
10%
Derived, Base, derivedFoo, baseFoo
21%
🥒
HTML Embed Code: