Перейти до вмісту

C Sharp

Матеріал з K2 ERP Wiki

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 входять:

Історично 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 змушують явно думати, де значення має змогу бути відсутнім.; * тестування;

Приклад: 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.;
  1. Використовувати сучасний .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

Основні поняття: OOP корисне для моделювання бізнес-сутностей, сервісів, правил і доменної логіки.; Description { get; set; }