A study guide for the C# language in question-and-answer format, from the fundamentals to advanced topics, written in English and Brazilian Portuguese.
Status: active. The material grows over time; new topics are added as they are written. See the roadmap.
- What you will find
- How to use it
- Repository layout
- Roadmap
- Contributing
- Security
- Code of conduct
- License
Each document is a numbered list of questions. Every question has a direct answer and, when it helps, a short code sample. Both languages cover the same questions.
| Topic | English | Português (BR) |
|---|---|---|
| C# programming foundations: compiled, typed and managed code, CLR and IL, .NET and .NET Standard, SDK and runtime, versioning, types, memory, and the core language constructs | C# Programming Foundations | Fundamentos da linguagem C# |
The foundations document currently has 145 questions.
-
Pick a document in the language you prefer.
-
Read the question and answer it yourself, out loud or on paper, before expanding the answer.
-
Compare your answer with the one given. If something is unclear or wrong, open a correction.
-
To work offline:
git clone https://github.com/vitorparras/CSharp-Mastery.git
The questions work well for interview preparation, for reviewing before an exam, or as a checklist of what to study next.
CSharp-Mastery/
├── US - English Version/ # English documents
│ └── C# Programming Foundations.md
├── BR - Versão em Portugues Brasileiro/ # Brazilian Portuguese documents
│ └── Fundamentos da linguagem C#.md
├── .github/ # Issue and PR templates, workflows, Dependabot
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── SECURITY.md
└── LICENSE
One document per topic, with the same file in both language folders.
Planned topics, in no particular order. Open a suggestion to propose another one or to volunteer for one of these.
- Object-oriented programming: classes, records, interfaces, inheritance, polymorphism
- Collections, generics and LINQ
- Asynchronous programming:
async/await,Task, channels, cancellation - Memory and performance: value vs. reference types,
Span<T>, garbage collection - Exceptions, logging and diagnostics
- ASP.NET Core and dependency injection
- Testing: xUnit, mocking, test design
Corrections, new questions and translations are welcome. Please read
CONTRIBUTING.md first: it explains the content guidelines
and the pull request workflow. The main branch is protected and only receives
changes through reviewed pull requests.
Found something that could lead a reader to an insecure practice, or a problem in this repository's configuration? Follow SECURITY.md and report it privately.
This project follows the Contributor Covenant. By participating you agree to uphold it.
Licensed under the MIT License. Copyright © Vitor Hugo Parras.