کدنامهمرجع‌های مهندسی نرم‌افزار، به فارسی

زبان ‎C#‎

C#

‎C#‎ زبان بزرگی است و بیشتر آموزش‌ها در سطح نحو متوقف می‌شوند. این مسیر تا جایی می‌رود که بدانی پشت async/await چه می‌گذرد، چرا آن LINQ کند است، و کِی struct به‌جای class.

۴۲فصل
۷۲۳تمرین با پاسخ
≈ ۶۱ ساعتزمان تخمینی
۳پروژهٔ نهایی

پیشرفت تو

۰٪

درصد هر فصل از دو چیز می‌آید: چقدر از بخش‌هایش را خوانده‌ای (۵۵٪) و چند تمرینش را تیک زده‌ای (۴۵٪). همه‌چیز داخل مرورگر خودت می‌ماند.

فصل

فصل‌ها به هم وابسته‌اند و ترتیبشان معنا دارد. هر مسیر با پروژه‌های نهایی تمام می‌شود: ساده، متوسط، پیچیده.

۱

اکوسیستم دات‌نت

‏SDK، runtime، پروژه، و اینکه dotnet build دقیقاً چه می‌کند.

در نوبت نوشتن
۲

نوع‌ها: value و reference

پشته و هیپ، کپی در برابر ارجاع، و boxing.

در نوبت نوشتن
۳

‏nullable reference types

کامپایلری که ‎NullReferenceException‎ را قبل از اجرا می‌گیرد.

در نوبت نوشتن
۴

کلاس، record و struct

سه انتخاب با سه معناشناسی متفاوت — و معیار انتخاب.

در نوبت نوشتن
۵

وراثت و interface

‏virtual، abstract، sealed و پیاده‌سازی پیش‌فرض interface.

در نوبت نوشتن
۶

عضو ایستا، const و readonly

تفاوت‌هایی که در زمان کامپایل و اجرا اثر دارند.

در نوبت نوشتن
۷

برابری و hash

‏Equals، GetHashCode، ‎==‎ و قرارداد‌هایی که شکستنشان گران است.

در نوبت نوشتن
۸

عملگر و تبدیل نوع

بارگذاری عملگر، ‎implicit‎ و ‎explicit‎.

در نوبت نوشتن
۹

‏generic و constraint

نوع به‌عنوان پارامتر، بدون از دست دادن ایمنی یا کارایی.

در نوبت نوشتن
۱۰

‏variance: in و out

چرا ‎List<Derived>‎ یک ‎List<Base>‎ نیست.

در نوبت نوشتن
۱۱

‏static abstract و ریاضی عمومی

عضو ایستای انتزاعی در interface — قابلیت تازهٔ زبان.

در نوبت نوشتن
۱۲

مجموعه‌ها

‏List، Dictionary، HashSet، Queue — و پیچیدگی زمانی هرکدام.

در نوبت نوشتن
۱۳

‏iterator و yield

تولید تنبل، و ماشین حالتی که کامپایلر می‌سازد.

در نوبت نوشتن
۱۴

‏LINQ ۱: مبانی و اجرای معوق

چرا کوئری تو هنوز اجرا نشده است.

در نوبت نوشتن
۱۵

‏LINQ ۲: عملگرهای پیشرفته

‏GroupBy، Join، SelectMany، Aggregate و دام‌های کارایی.

در نوبت نوشتن
۱۶

‏expression tree

کد به‌عنوان داده — پایه‌ای که ‎EF Core‎ رویش ساخته شده.

در نوبت نوشتن
۱۷

‏delegate، event و lambda

تابع به‌عنوان مقدار، و الگوی رویداد.

در نوبت نوشتن
۱۸

‏closure و دام‌هایش

متغیر ربوده‌شده در حلقه — کلاسیک‌ترین باگ.

در نوبت نوشتن
۱۹

‏pattern matching

‏switch expression، الگوی ویژگی، لیست و رابطه‌ای.

در نوبت نوشتن
۲۰

خطا و exception

کِی بگیر، کِی نگیر، ‎filter‎ و خطای سفارشی.

در نوبت نوشتن
۲۱

‏IDisposable و IAsyncDisposable

‏using، الگوی dispose و منابعی که GC نمی‌گیرد.

در نوبت نوشتن
۲۲

‏async/await: مدل ذهنی

‏async یعنی «نخ را نگه ندار»، نه «سریع‌تر».

در نوبت نوشتن
۲۳

‏Task و cancellation

‏WhenAll، WhenAny، CancellationToken و مهلت.

در نوبت نوشتن
۲۴

دام‌های async

‏async void، بن‌بست، ‎ConfigureAwait‎ و ‎sync over async‎.

در نوبت نوشتن
۲۵

‏ValueTask و IAsyncEnumerable

جریان ناهمگام و کاهش تخصیص.

در نوبت نوشتن
۲۶

‏Channel

تولیدکننده و مصرف‌کننده، با فشار برگشتی.

در نوبت نوشتن
۲۷

نخ، قفل و atomic

‏lock، Interlocked، مدل حافظه و مسابقهٔ داده.

در نوبت نوشتن
۲۸

‏Span و Memory

کار با حافظه بدون کپی و بدون تخصیص.

در نوبت نوشتن
۲۹

تخصیص و زباله‌روب

نسل‌ها، ‎LOH‎، و اینکه چرا کد تو مکث می‌کند.

در نوبت نوشتن
۳۰

‏System.Text.Json

سریال‌سازی، تبدیل‌گر سفارشی و منبع تولید.

در نوبت نوشتن
۳۱

زمان و تاریخ

‏DateTimeOffset، TimeProvider، منطقهٔ زمانی و تقویم فارسی.

در نوبت نوشتن
۳۲

عبارت باقاعده

‏Regex، منبع تولید، و خطر بازگشت فاجعه‌بار.

در نوبت نوشتن
۳۳

‏reflection و attribute

قدرت زمان اجرا، و هزینه‌اش.

در نوبت نوشتن
۳۴

‏source generator

کد تولید کن به‌جای reflection — سریع‌تر و AOT-پسند.

در نوبت نوشتن
۳۵

‏analyzer و قواعد کد

قانون تیمی که کامپایلر اجرایش می‌کند.

در نوبت نوشتن
۳۶

‏interop و P/Invoke

فراخوانی کد بومی و ‎LibraryImport‎.

در نوبت نوشتن
۳۷

تست با xUnit

‏fixture، تست پارامتری، mock و assertion خوانا.

در نوبت نوشتن
۳۸

‏benchmark

‏BenchmarkDotNet: اندازه‌گیری قبل از بهینه‌سازی.

در نوبت نوشتن
۳۹

ساختار پروژه و NuGet

چند پروژه، وابستگی مرکزی و انتشار بسته.

در نوبت نوشتن
۴۰

پروژهٔ ۱ — ابزار خط فرمان

‏CLI واقعی با آرگومان، خطا، لاگ و تست.

در نوبت نوشتنپروژهٔ ساده
۴۱

پروژهٔ ۲ — کتابخانهٔ قابل انتشار

‏API تمیز، تست کامل، benchmark و بستهٔ NuGet.

در نوبت نوشتنپروژهٔ متوسط
۴۲

پروژهٔ ۳ — پردازشگر همروند پرکار

‏Channel، async، cancellation، pooling و کارایی اندازه‌گیری‌شده.

در نوبت نوشتنپروژهٔ پیچیده