Цей план є детальним путівником по екосистемі C#. Він побудований за принципом Stack-Centric ("Від Ядра до Сфер") і розбитий на атомарні теми для послідовного вивчення.
Мета: Розібратися з інструментами та базовим синтаксисом.
new, build, run, watch, publish).const vs readonly).Convert, Parse, TryParse).var (Implicit typing).string? vs string, null-forgiving operator !, NRT warnings.<<, >>, |, &, ^), flags enums.@""), Raw string literals ("""...""").$"Name: {name}" та formatting ({date:yyyy-MM-dd}).Regex, прості патерни (email, phone validation).DateTime vs DateTimeOffset (чому Offset важливий для вебу).DateOnly & TimeOnly (починаючи з .NET 6).DateTime.Parse), Formatting (ToString), Arithmetic (AddDays).TimeZoneInfo, UTC vs Local time best practices.if, else, switch, Ternary operator).for, foreach, while, do-while).break, continue, return).switch expressions.ref, out, in).Write vs WriteLine, ReadLine vs ReadKey.SetCursorPosition, GetCursorPosition, CursorVisible (створення простого меню).Мета: Опанувати парадигму ООП та систему типів.
dotnet add package, Package Manager UI, packages.json.PackageReference.dotnet tool install).this keyword.public, private, protected, internal, file).init accessors.base keyword, Constructors in inheritance.virtual, override).new).ref struct.with expressions, Value equality.ValueTuple, Deconstruction.int?) vs Reference types (string?), Null-coalescing operators (??, ??=, ?.).using directive, static using, global using.Мета: Вивчити потужні механізми для гнучкого коду.
where, allows ref struct in C# 13).out, in).Action, Func, Predicate.event keyword, Standard event pattern.try, catch, finally.when).throw, throw expression).IIncrementalGenerator, compile-time code generation.Мета: Писати код, який легко підтримувати.
Мета: Створення зручних інструментів (User Experience).
Мета: Гарантувати цілісність даних та керувати логікою без "Exception Driven Development".
ArgumentNullException.ThrowIfNull).[Required], [MaxLength]).IValidatableObject interface.Result<T> (Success/Failure) замість throw.OnSuccess, OnFailure).FluentResults або ErrorOr.IServiceCollection, IServiceProvider), Service lifecycles (Transient, Scoped, Singleton), Scopes, Container internals, Custom containers, DI Best Practices (Constructor injection, avoiding Service Locator anti-pattern), DI Anti-patterns (Captive Dependency, Circular Dependencies).appsettings.json, Environment Variables, User Secrets, Command Line), Options Pattern (IOptions<T>, IOptionsSnapshot<T>, IOptionsMonitor<T>), Hot Reload.Мета: Ефективно маніпулювати даними.
List<T>, Dictionary<T,V>, HashSet<T>, Queue<T>, Stack<T>, LinkedList<T>.ConcurrentDictionary, BlockingCollection, System.Threading.Channels (Producer/Consumer queues).IEnumerable<T> & IEnumerator<T> (Yield return).Array class & Multidimensional arrays.[]).Span<T> & ReadOnlySpan<T>.Memory<T>.Where, OfType).Select, SelectMany).OrderBy, ThenBy).GroupBy).Join, GroupJoin).Sum, Count, Aggregate, MaxBy, MinBy).Distinct, Union, Intersect).First, Single, ElementAt, Index).Мета: Розуміти процеси, пам'ять та асинхронність.
IDisposable & using statement.WeakReference.System.Type.dynamic keyword, ExpandoObject.Thread class.lock (Monitor), System.Threading.Lock (C# 13), Mutex, Semaphore, AutoResetEvent.Interlocked operations.Volatile.Task & Task<T>.ContinueWith).Parallel class (For, ForEach, Invoke).CancellationToken.async & await keywords.Task.WhenAll, Task.WhenAny.IAsyncEnumerable).async void, Deadlocks).AsParallel().AsOrdered().unsafe context.*, &, ->).fixed statement.Мета: Взаємодія зі світом.
System.Net.Sockets (Socket programming basics).HttpClient Lifecycle & IDisposable issues.IHttpClientFactory (Best Practice).System.Net.WebSockets).System.Security.Cryptography.Мета: Зберігати та передавати дані.
File, Directory, Path, FileInfo, DirectoryInfo.Stream, FileStream, MemoryStream).StreamReader & StreamWriter.BinaryReader & BinaryWriter.GZipStream, ZipArchive).System.Text.Json (JsonSerializer, Attributes, Custom Converters, Source Generators).System.Xml, XmlSerializer, LINQ to XML (XDocument).MessagePack / Protobuf (Alternatives to BinaryFormatter).Мета: Тестувати та публікувати.
Process class.AssemblyLoadContext).