C Sharp
var expensiveProducts = products
Task і ValueTask
dotnet new webapi C# і ASP.NET Core часто використовуються для створення Web API.; # Додавати cancellation tokens.; — має змогу бути null.; var builder = WebApplication.CreateBuilder(args); Properties можуть бути:
Nullable reference types допомагають зменшити кількість NullReferenceException.; * Entity;
- Value Object;
- Aggregate;
- Repository;
- Domain Service;
- Domain Event;
- Bounded Context.;== Практичний висновок ==
[Route("api/orders")]
}
Практична думка: інтерфейс — це обіцянка.; C# добре підходить для задач, де важливі:
.NET має вбудовану logging abstraction.; # Увімкнути nullable reference types.; * потужний debugger;
- designer tools;
- profiling;
- refactoring;
- test runner;
- project templates;
- Azure integration;
- Windows desktop tooling.; LINQ надає можливість писати запити до колекцій, баз даних, XML або інших джерел у вигляді C#-коду.; Integration tests перевіряють взаємодію компонентів.; * authentication;
- authorization;
- input validation;
- output encoding;
- SQL injection;
- CSRF;
- XSS;
- secrets;
- logging;
- HTTPS;
- package vulnerabilities;
- dependency updates;
- secure configuration.; Код каже: “мені не істотно, хто саме це зробить; мені істотно, щоб він умів виконати цей контракт”.; У бізнес-системах класи часто представляють документи, клієнтів, товари, рахунки, сервіси або правила.; * Integration test — тест взаємодії компонентів.; Visual Studio — головна IDE Microsoft для .NET і C#.; # Писати unit та integration tests.; Blazor корисний для internal tools, dashboards, admin panels і enterprise UI.; .NET 10 охоплює performance improvements у runtime, libraries і workloads.; # Писати async-код без blocking.;== Сильна типізація ==
C# і Java
Authentication — хто користувач системи.; Pattern matching надає можливість комфортно перевіряти форму й тип даних.; Платформа !!;== Memory management ==
Інтерфейси
Для enterprise-систем права доступу часто складніші за просту роль “admin/user”.; Record — тип, зручний для immutable data і value-like моделей.; Приклади:
Приклад:
Task<int> CalculateAsync();
Інтерфейси корисні для:
Типові помилки в C#
На продуктивність впливають:
public async Task<ActionResult<OrderDto>> GetById(int id)
Unit tests перевіряють маленькі частини логіки.; # Стежити за .NET support lifecycle.; logger.LogInformation("Order {OrderId} processed", orderId);
C# добре підходить для cloud.; Unit tests мають бути швидкими й стабільними.;== Logging ==
Records корисні для: dotnet add package Newtonsoft.Json
[Fact]
C# — одна з найсильніших мов для enterprise-розробки, backend, Web API, desktop, cloud і довгострокових бізнес-систем.; Приклад:
Records
{
<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">
public void Add_ReturnsSum()
Асинхронність сприяє не блокувати threads під час очікування I/O.; JetBrains Rider — популярна кросплатформена IDE для .NET.; # Перевіряти EF Core queries.; Або:
C# найкраще використовувати там, де потрібні надійність, типізація, підтримуваність, API, інтеграції, бізнес-логіка й сильний tooling.; * Web API — HTTP API для взаємодії систем.; Технології:
LINQ — Language Integrated Query.; * Task — асинхронна операційна дія.; Вона поєднує строгі типи, сучасний синтаксис, сильний tooling, високу продуктивність і зручність для enterprise-розробки.; * dotnet CLI — командний інтерфейс .NET.; C# має змогу бути невдалим вибором, якщо:
{
- типізація;
- підтримуваність;
- інструменти розробки;
- тестування;
- продуктивність;
- асинхронність;
- робота з API;
- інтеграції;
- enterprise-архітектура;
- довгострокова супровід;
- cloud deployment;
- робота з базами даних.;== Properties ==
}
- backend-сервісів;
- інтеграцій;
- API gateway;
- звітних сервісів;
- обробки черг;
- імпорту/експорту;
- desktop clients;
- middleware;
- синхронізації даних.; Ідея
public class Order
Через NuGet встановлюють бібліотеки:
dotnet build
- великі об’єкти;
- collections;
- streams;
- IDisposable;
- async resources;
- memory leaks через events;
- caching;
- allocations у hot paths.; Поширені помилки:
public class Customer
NuGet корисний, але потрібно перевіряти:
Assert.Equal(5, result);
- сильний refactoring;
- code analysis;
- навігацію;
- тестування;
- підтримку Unity;
- кросплатформеність;
- інтеграцію з JetBrains ecosystem.; return await db.Customers.FindAsync(id);
public async Task<Customer?> GetCustomerAsync(int id)
Authorization — що йому дозволено.;
var result = Calculator.Add(2, 3);
Не можна зберігати паролі, tokens і connection strings у Git.; * Unit test — тест маленької частини коду.;
.Where(o => o.CustomerId == customerId) .ToListAsync();
EF Core корисний для:
- CRUD;
- migrations;
- LINQ queries;
- relational databases;
- PostgreSQL;
- SQL Server;
- MySQL;
- SQLite.
Але для складних звітів іноді краще писати SQL або використовувати спеціалізований reporting layer.
Blazor
bool isActive = true; Приклади:
Visual Studio
public record ProductDto(int Id, string Name, decimal Price); public string?; [ApiController]
як ілюстрація:
!; JavaScript або TypeScript — на frontend.; * DDD — Domain-Driven Design.;
NuGet — package manager для .NET.; .OrderBy(p => p.Name) Generics використовуються в:
}
переважні аспекти:
- local development;
- CI/CD;
- build scripts;
- tests;
- publishing;
- containers;
- automation.;[1]
- OpenTelemetry;
- Application Insights;
- Prometheus;
- Grafana;
- Serilog;
- Seq;
- Elastic Stack.; * ASP.NET Core — framework для web apps і API.; Потрібно контролювати:
Приклад:
Приклад:
Об’єктно-орієнтоване програмування
- allocations;
- async usage;
- database queries;
- caching;
- serialization;
- logging;
- LINQ usage;
- pooling;
- memory pressure;
- GC;
- network calls.;== Актуальні версії ==
OrderStatus.Paid => "Оплачено",
|- | .NET Framework || стара Windows-only платформа |- | .NET Core || кросплатформений перехідний етап |- | .NET || сучасна єдина платформа для Windows, Linux, macOS, cloud і container deployment |}
Desktop development
MAUI
Головна ідея C# — дати розробнику безпечну, продуктивну й виразну мову для великих програмних систем.; * IDisposable — інтерфейс для звільнення ресурсів.; До .NET входять:
- не найкращий вибір для коротких одноразових scripts;
- AI research ecosystem сильніший у Python;
- потрібне розуміння .NET;
- enterprise-архітектура має змогу бути надмірною для малих задач;
- потрібно стежити за версіями .NET і NuGet;
- без tests і architecture C# теж має змогу перетворитися на хаос.; * Interface — контракт для реалізацій.; * Розробка в K2 ERP
- Тестування коду
- API K2 ERP
- Інтеграції K2 ERP
- Звітність K2 ERP
- Python
- PyTorch
- Keras
- MLflow
- LangChain
- GitHub Copilot
- Cursor
- Tabnine
- Deep Learning
- Великі мовні моделі
- GPT
- Claude Models
- Штучний інтелект
- Генеративний AI
Історично C# часто асоціювався з .NET Framework.; * Entity Framework Core — ORM для .NET.;[2]
- read/write;
- read-only;
- init-only;
- computed;
- private set;
- required.; C# можна використовувати для AI-застосунків.; # Логувати структуровано.;== LINQ ==
C# має змогу використовуватися в ERP-екосистемах як мова для:
await service.ProcessAsync(orderId);
== Nullable reference types ==
Controllers — класичний підхід ASP.NET Core Web API.; * Web API;
* database calls;
* HTTP requests;
* file operations;
* cloud services;
* message queues;
* background jobs.; * '''NuGet''' — package manager для .NET.; * '''.NET''' — платформа для запуску застосунків на C#, F# і Visual Basic.; backend-розробки забезпечується через C# застосовують; додатково реалізовано Web API, enterprise-систем, desktop-застосунків, cloud-сервісів, мобільних застосунків, ігор, інтеграцій, автоматизації, мікросервісів, роботи з базами даних і бізнес-логіки.; {
public class OrdersController : ControllerBase
== IDisposable ==
* Web API;
* enterprise backend;
* ASP.NET Core;
* cloud services;
* desktop apps;
* background workers;
* strongly typed domain logic;
* integrations;
* Microsoft ecosystem;
* Azure;
* internal business systems;
* microservices;
* reporting services;
* тестованої бізнес-логіки.; * обробка черг;
* scheduled tasks;
* імпорт/експорт;
* інтеграції;
* email sending;
* report generation;
* file processing;
* data synchronization.; {
_ => "Невідомо"
Для C# використовують:
public interface IReportService
{
public string Name { get; set; } = "";
== Visual Studio Code ==
Task<byte []> GenerateReportAsync(int reportId);
Коротко: C# — це мова для побудови надійних програм на .NET.; Документація C# 14 зазначає, що нові функціональні можливості C# 14 можна використовувати з .NET 10 SDK.; Приклад:
Це спрощує роботу з пам’яттю, але не означає, що memory можна ігнорувати.; VS Code зручний для cross-platform development, web API, cloud і lightweight workflow.; * Strong typing — строга типізація.;[3]
як ілюстрація:
|-
| '''C#''' || enterprise backend, .NET, типізація, Web API, desktop, cloud, tooling
|-
| '''Python''' || data science, scripting, AI research, automation, ML libraries
|}
Приклад:
.ToList();
C# часто використовують у великих архітектурах.; {
</div>
У .NET 10 для ASP.NET Core є собою актуалізація Blazor, зокрема зміни навколо Blazor script як static web asset.; Generics — одна з причин, чому C# добре підходить для великих typed систем.; * '''MAUI''' — cross-platform UI framework для mobile і desktop.; using var stream = File.OpenRead(path);
app.Run();
[[Категорія:C Sharp]]
Приклад:
Приклад minimal API:
* C# ASP.NET Core API;
* TypeScript frontend;
* PostgreSQL або SQL Server;
* Redis cache;
* background workers;
* message queue.;== Entity Framework Core ==
Сценарії:
Але вибір C# має бути виправданий архітектурою.;
Items.Add(item);
- .NET 10 — LTS-реліз;
- C# 14 — мова, пов’язана з .NET 10 SDK;
- ASP.NET Core 10 — актуальна лінійка ASP.NET Core для .NET 10.; Але сучасна розробка програмного забезпечення зазвичай використовує .NET без слова Framework:
ASP.NET Core має вбудований DI container.; Офіційна документація .NET пояснює, що .NET надає можливість створювати застосунки на різних платформах з використанням C#, F# і Visual Basic.;
{| class="wikitable"
* сервіс обміну даними;
* REST API wrapper;
* генератор звітів;
* Windows desktop utility;
* background worker;
* інтеграційні функціональні можливості з Microsoft ecosystem;
* шлюз до зовнішніх систем.; Для deep learning або LLM часто використовують зовнішні моделі/API, але ML.NET має змогу бути зручним для класичного ML у .NET-проєктах.; C# з .NET добре підходить для background jobs.;</div>
Клас має змогу містити:
int count = 10;
Web API потрібні для:
<pre>
== C# і AI ==
EF Core надає можливість працювати з базою даних через C#-об’єкти.;== Integration tests ==
Обмеження:
Він застосовується для:
* ERP;
* CRM;
* електронний документообіг;
* фінансові сервіси;
* формування звітів;
* інтеграції;
* API;
* workflow;
* internal tools;
* identity systems;
* reporting;
* background processing.; Це означає, що типи змінних, параметрів, полів і результатів мають значення.; * strong typing;
* стабільна програмний пакет;
* ASP.NET Core;
* EF Core;
* tooling;
* тестування;
* продуктивність;
* довгострокова супровід;
* Microsoft ecosystem.; }
{
[[Категорія:Backend]]
* classification;
* regression;
* recommendation;
* anomaly detection;
* forecasting;
* text classification;
* integration into .NET apps.; * JVM ecosystem;
* Spring;
* cross-platform enterprise;
* великий open-source ринковий сегмент;
* long-running enterprise deployments.;== C# у бізнесі ==
OrderStatus.New => "Нове замовлення",
...; {| class="wikitable"
== Unit tests ==
== Minimal APIs ==
Станом на сучасну лінійку .NET, важливими є собою:
{
* Domain;
* Application;
* Infrastructure;
* Presentation.; }
C# часто обирають для enterprise cloud через strong typing, tooling і стабільну екосистему .NET.;</div>
<pre>
C# і JavaScript / TypeScript
Приклад класу: В ASP.NET Core можна використовувати:
.Select(p => p.Name)
Entity Framework Core або EF Core — ORM для .NET.; * SDK — набір інструментів для розробки.;
Controllers
public List<T> Items { get; } = new();
catch (OrderNotFoundException ex)
Rider
C# і Java мають схожі enterprise-сфери.;
Добре логувати:
- C# — мова програмування C Sharp.;
- не ловити всі exceptions без потреби;
- логувати важливі помилки;
- не приховувати критичні проблеми;
- створювати domain-specific exceptions;
- не використовувати exceptions для нормального control flow.; public DateTime Date { get; set; }
Практична користь: nullable reference types змушують явно думати, де значення має змогу бути відсутнім.; * тестування;
- заміни інфраструктури;
- підтримки;
- довгострокових систем;
- enterprise development.; *
string— не має бути null; string?; * Pattern matching — зіставлення з шаблонами.; * Microsoft Learn — C# Guide- Microsoft Learn — C# language reference
- Microsoft Learn — What's new in C# 14
- Microsoft Learn — .NET documentation
- Microsoft Learn — What's new in .NET 10
- Microsoft .NET Blog — Announcing .NET 10
- Microsoft — .NET support policy
- Microsoft Learn — ASP.NET Core documentation
- Microsoft Learn — What's new in ASP.NET Core in .NET 10
- Microsoft Learn — C# language versioning
- MediaWiki — Help:Formatting
- MediaWiki — Help:Links
Приклад:
Class — характеристика типу об’єкта.; C# сильний у:
.NET — це платформа, на якій ця мова найчастіше функціонує.; * помилки видно раніше;
- IDE краще підказує код;
- легше робити refactoring;
- легше підтримувати великий код;
- менше випадкових runtime-помилок;
- простіше читати API.; * LTS — Long Term Support.; Приклад:
Головна ідея
Ідея: бізнес-логіка не повинна залежати від бази даних, UI або зовнішніх API.; * Class — клас, характеристика типу об’єкта.;== Architecture ==
C#/.NET застосунки часто мають конфігурацію:
ML.NET — machine learning framework для .NET.;== Коли C# особливо корисний ==
Visual Studio Code — легкий редактор із розширеннями для C#.; * WPF;
- WinForms;
- MAUI;
- Avalonia;
- WinUI.;[4]
- C# Dev Kit;
- C# extension;
- .NET SDK;
- debugger;
- test explorer;
- terminal.; Для бізнес-систем це дуже істотно.; public int Id { get; set; }
{
Microsoft оголосила .NET 10 як Long Term Support release із підтримкою на три роки, до 10 листопада 2028 року.; * Clean Architecture — архітектурний підхід із розділенням шарів.; Controllers зручні для складніших API з routing, filters, attributes, validation і versioning.;== Domain-Driven Design ==
Вони корисні для:
};
* API + database;
* service + external API mock;
* background job + queue;
* EF Core + PostgreSQL;
* authentication + authorization.; C# — strongly typed language.; C# використовує exceptions для обробки помилок.;<pre>
Приклад:
<pre>
* runtime;
* standard libraries;
* SDK;
* compiler;
* CLI;
* package ecosystem;
* ASP.NET Core;
* Entity Framework Core;
* MAUI;
* Blazor;
* tooling;
* deployment tools.;<pre>
C# і .NET мають добру продуктивність для backend і enterprise-систем.; Desktop C# корисний для:
<div style="background:#fff0f0;border-left:6px solid #eb5757;padding:14px 18px;margin:16px 0;border-radius:8px;">
dotnet test
}
Для ASP.NET Core можна використовувати:
DDD корисний, коли бізнес-логіка складна.; '''IDisposable''' застосовується для ресурсів, які треба явно звільнити.; Приклад:
== Exception handling ==
завдяки наявності '''Проста аналогія:''' C# — це як добре організована майстерня: є собою правила, типи, інструменти, пакети, тестування й стандарти.; Java сильна в:
'''DDD''' — Domain-Driven Design.;
Integration tests повільніші, але краще ловлять проблеми реальної системи.; * Nullable reference types — механізм контролю null у reference types.;
- Використовувати сучасний .NET LTS для production.; # Мати CI/CD.;== dotnet CLI ==
Pattern matching корисний для:
Для більшості бізнес-коду Task достатній і зрозуміліший.; Clean Architecture розділяє код на шари:
IDisposable важливий для:
- .NET 6;
- .NET 7;
- .NET 8;
- .NET 9;
- .NET 10.; public string Name { get; set; } = "";
var orders = await db.Orders
CLI потрібен для:
DI корисний для:
- domain logic;
- services;
- validators;
- calculations;
- parsers;
- mapping;
- edge cases.; Офіційна документація Microsoft описує C# language reference як джерело з синтаксису, idioms і специфікації мови для .NET-розробників.;== Dependency Injection ==
LINQ корисний для:
Це одна з найсильніших можливостей C#.; Сценарії:
Приклад:
Джерела
- ліцензії;
- maintenance;
- security vulnerabilities;
- кількість залежностей;
- сумісність із .NET version;
- репутацію пакета.;
* xUnit;
* NUnit;
* MSTest;
* FluentAssertions;
* Moq;
* NSubstitute;
* Verify;
* Shouldly.; public class CalculatorTests
'''async/await''' — механізм асинхронного програмування.; Різниця:
logger.LogWarning(ex, "Order not found");
* важливі бізнес-події;
* помилки;
* correlation IDs;
* latency;
* external API calls;
* background jobs;
* security events.;
істотно: типізація C# не захищає автономно від поганої авторизації, витоку секретів, небезпечних залежностей або неправильних SQL-запитів.; * .NET Framework — стара Windows-only платформа.; Під час роботи з C# варто:
- маленьких сервісів;
- prototypes;
- microservices;
- internal APIs;
- lightweight endpoints.;
Blazor — framework для створення web UI на C#.; * паролі;
- tokens;
- персональні інформаційні дані без потреби;
- повні request bodies із чутливими даними.; Мова !!; Для великих систем можна використовувати controllers, clean architecture і окремі application services.;
* Azure Functions;
* AWS Lambda for .NET;
* containerized services;
* Kubernetes;
* microservices;
* background workers;
* queues;
* message brokers;
* cloud APIs;
* serverless.;== Коли C# має змогу бути невдалим вибором ==
}
* dependency injection;
* testing;
* mock objects;
* loose coupling;
* clean architecture;
* заміни реалізацій;
* plugin-like design.; # Використовувати dependency injection.; Офіційна документація ASP.NET Core описує його як framework для fast, secure, cross-platform and cloud-based web apps and services.; }
* фільтрації;
* сортування;
* групування;
* проєкції;
* агрегації;
* роботи з IEnumerable;
* Entity Framework Core queries.;<ref>https://learn.microsoft.com/en-us/dotnet/</ref>
C# має сильну екосистему тестування.; Корисні для:
* Blazor Server;
* Blazor WebAssembly;
* Blazor Web App.;== Web API ==
'''.NET MAUI''' — framework для cross-platform застосунків.;<pre>
<pre>
== Тестування в C# ==
Приклад:
OrderStatus.Cancelled => "Скасовано",
}
'''ASP.NET Core''' — framework для вебзастосунків і API на .NET.; Це трохи дисциплінує, зате користувачі можуть будувати великі системи без хаосу.;== Пояснення термінів ==
* internal enterprise tools;
* касових систем;
* промислового ПЗ;
* Windows-застосунків;
* адмін-панелей;
* локальних інтеграцій.; Приклад xUnit:
Приклад:
* потрібен дуже маленький script;
* команда не знає .NET;
* вся програмний пакет вже на іншому стеку;
* задача простіше вирішується SQL або Bash;
* потрібна ML research програмний пакет Python;
* проєкт в цілому frontend-only;
* немає потреби в strongly typed backend;
* середовище не підтримує роботу .NET deployment.;== Observability ==
<pre>
[[Категорія:Програмування]]
Visual Studio особливо сильна для Windows, enterprise і desktop development.;<pre>
== .NET Framework і сучасний .NET ==
'''Interface''' описує контракт.; # Виносити бізнес-логіку з controllers.; C# добре підходить для DDD завдяки наявності типам, records, pattern matching, interfaces і tooling.; * '''CLR''' — Common Language Runtime, runtime середовище .NET.; Це корисно для:
C# 14 додає field-backed properties, що спрощують доступ до backing field через ключове слово <code>field</code>.; * '''Generics''' — типізовані шаблони коду.; Для нових проєктів зазвичай варто обирати сучасний .NET, якщо немає спеціальної причини залишатися на .NET Framework.; '''Практична думка:''' для enterprise-проєктів C# сильний не тільки мовою, а й дисципліною: solution structure, DI, interfaces, tests, NuGet, analyzers, CI/CD.;[[Категорія:Розробка]]
await using var db = new AppDbContext(options);
Він надає можливість створювати застосунки для:
string name = "K2 ERP";
У контексті [[K2 ERP]] C# має змогу бути корисним для зовнішніх сервісів або інтеграцій, якщо проєкт використовує .NET-інфраструктуру.;<pre>
Популярні frameworks:
</div>
string GetStatusText(OrderStatus status) => status switch
public int Id { get; set; }
[[Категорія:.NET]]
C# добре підходить для бізнес-систем:
dotnet add package xunit
C# і Python часто використовуються в різних ролях.; Причини:
{
public decimal TotalAmount { get; set; }
* appsettings.json;
* environment variables;
* user secrets;
* Azure Key Vault;
* AWS Secrets Manager;
* Kubernetes secrets;
* command-line arguments.; [HttpGet("{id}")]
<pre>
dotnet add package Microsoft.EntityFrameworkCore
MAUI підходить для мобільних і desktop-застосунків, але вибір MAUI варто робити з урахуванням команди, UX-вимог і підтримки платформ.;[[Категорія:Пояснення термінів]]
{
async/await потрібен для:
Без observability production-система стає “чорною скринькою”.; * '''LINQ''' — Language Integrated Query.; * properties;
* fields;
* methods;
* constructors;
* events;
* nested types.; public decimal Price { get; init; }
* DTO;
* API responses;
* commands;
* events;
* value objects;
* immutable structures;
* message contracts.;
!; C# — це мова.; * class;
- object;
- inheritance;
- interface;
- encapsulation;
- polymorphism;
- abstraction.; Minimal APIs — компактний спосіб створювати HTTP endpoints.; Не варто логувати:
Типова технічна архітектура:
var app = builder.Build();
Task SaveAsync();
public void Add(T item)
== Authentication і Authorization ==
== Cloud development ==
C# підтримує роботу object-oriented programming.; '''Dependency Injection''' — підхід, де залежності передаються ззовні, а не створюються всередині класу.;== Продуктивність ==
Приклад:
* logs;
* metrics;
* traces;
* health checks;
* dashboards;
* alerts.;== NuGet ==
* cookies;
* JWT;
* OAuth;
* OpenID Connect;
* Identity;
* policies;
* roles;
* claims.; {
== C# і .NET ==
<pre>
це сучасна об’єктно-орієнтована, strongly typed і мультипарадигмальна мова програмування, яка найчастіше застосовують, коли потрібно разом із платформою ''' виступає ключовою рисою '''C#''' або '''C Sharp'''.NET'''.; * frontend застосунків;
* mobile apps;
* integrations;
* ERP API;
* microservices;
* external partners;
* automation;
* AI tools.; C# часто застосовується на backend.;<ref>https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-10.0</ref>
<pre>
У реальних системах Python має змогу тренувати модель, а C# — викликати її через API в production.; * тестування;
* clean architecture;
* заміни реалізацій;
* конфігурації;
* слабкого зв’язування компонентів.; # Контролювати NuGet dependencies.; * .NET ecosystem;
* ASP.NET Core;
* Visual Studio tooling;
* Windows integration;
* Azure;
* сучасний синтаксис;
* LINQ;
* records;
* async/await.; * List<T>;
* Dictionary<TKey, TValue>;
* Task<T>;
* IEnumerable<T>;
* Repository<T>;
* Result<T>;
* Nullable<T>.; builder.Services.AddScoped<IOrderService, OrderService>();
}
C# застосовується для desktop-застосунків.; Поняття:
Тут:
* strong typing;
* .NET ecosystem;
* ASP.NET Core;
* LINQ;
* async/await;
* records;
* pattern matching;
* nullable reference types;
* generics;
* tooling;
* NuGet;
* тестування;
* продуктивність;
* cloud readiness;
* enterprise architecture.; '''ValueTask''' має змогу бути корисним у performance-sensitive сценаріях, але його не варто використовувати всюди без потреби.;<ref>https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/</ref>
app.MapGet("/api/health", () => Results.Ok(new { status = "ok" }));
* Web API;
* MVC;
* Razor Pages;
* Blazor;
* microservices;
* cloud apps;
* REST API;
* backend services.; '''Task''' представляє асинхронну операцію.;== Security ==
* layered architecture;
* clean architecture;
* hexagonal architecture;
* domain-driven design;
* CQRS;
* microservices;
* modular monolith;
* event-driven architecture.; # Документувати public API.; C# і ASP.NET Core мають багато засобів безпеки, але безпека залежить від архітектури й коду.; Якщо ключовий стек K2 ERP побудований на Python, C# варто використовувати там, де він справді дає перевагу.; dotnet publish
== Дивіться додатково ==
C# використовує garbage collector.;<ref>https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14</ref>
'''Property''' — зручний спосіб описати інформаційні дані об’єкта.;== ML.NET ==
Він корисний для:
== ASP.NET Core ==
Blazor надає можливість писати frontend на C#, але TypeScript залишається дуже популярним для web UI.; Сильні сторони:
== Хороші практики ==
* виклик LLM API;
* RAG backend;
* AI agents;
* document processing;
* embeddings;
* speech-to-text;
* text-to-speech;
* integration with Azure AI;
* ML.NET;
* OpenAI-compatible APIs;
* enterprise AI middleware.; * '''async/await''' — механізм асинхронного програмування.; * '''Record''' — тип для immutable або value-like даних.; * '''Dependency Injection''' — передача залежностей ззовні.; * files;
* streams;
* database connections;
* sockets;
* unmanaged resources.;<ref>https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14</ref>
}
<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">
* Android;
* iOS;
* macOS;
* Windows.; public string Name { get; set; } = "";
<pre>
[[Категорія:C#]]
Приклад:
== Класи ==
== Pattern matching ==
Варіанти:
Rider часто обирають за:
== async/await ==
Добра практика:
== Background services ==
public class Repository<T>
== Configuration і Secrets ==
'''dotnet CLI''' — командний інтерфейс .NET.; Сильні сторони
== C# і Python ==
У .NET для цього часто використовують Worker Service, hosted services або зовнішні orchestrators.; * ігнорувати nullable warnings;
* блокувати async-код через <code>.Result</code> або <code>.Wait()</code>;
* робити великі God classes;
* змішувати бізнес-логіку з controllers;
* не писати тести;
* неправильно використовувати dependency injection;
* логувати секрети;
* не закривати IDisposable resources;
* створювати N+1 queries в EF Core;
* не використовувати cancellation tokens;
* робити надто складну архітектуру для простої задачі;
* не оновлювати NuGet packages;
* не перевіряти supported .NET versions.; '''Generics''' дозволяють писати код, який функціонує з різними типами без втрати type safety.; Вибір залежить від команди, інфраструктури й екосистеми.; # Використовувати analyzers і formatting.; Blazor надає можливість писати frontend-компоненти без JavaScript як основної мови.;<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">
== C# і ERP-системи ==
try
.Where(p => p.Price > 1000)
dotnet run
Потрібно контролювати:
Records зменшують boilerplate-код і роблять моделі даних компактнішими.; переважні аспекти типізації:
Observability охоплює:
Приклад:
Для документації: у статтях краще писати не без ускладнень “сучасний C#”, а конкретно: C# 14 / .NET 10 або іншу версію, яку реально використовує проєкт.; * Blazor — framework для web UI на C#.;== Generics ==
.NET documentation має окремий напрям “Build AI apps in .NET”.;== Clean Architecture ==
- switch expressions;
- type checks;
- nullable logic;
- discriminated-like scenarios;
- обробки різних станів;
- clean domain logic.; # Не зберігати secrets у коді.; Підходи:
C# особливо корисний для:
{
}
{{SEO