Shipping .NET means nullable warnings as errors, analyzers, pinned SDKs, structured logging, and tests in CI—not just "it runs on my machine."
Checklist
<Nullable>enable</Nullable>and treat warnings seriouslydotnet formatand Roslyn analyzers in CI- Pin SDK with
global.json; lock package versions - Use
ILoggerinstead ofConsole.WriteLinein services - Unit tests with
dotnet test; integration tests for databases separately - Profile before micro-optimizing LINQ or allocations
- Web concerns (auth, EF, deployment) live in the ASP.NET track
Important interview questions and answers
- Q: Why enable nullable reference types?
A: Surfaces null contracts at compile time—reduces NullReferenceException defects in large codebases. - Q: How reduce GC pressure?
A: Avoid unnecessary allocations in hot paths, pool buffers when profiling proves need, prefer structs for tiny immutable data.
Self-check
- What file pins the SDK version?
- Why separate unit and integration tests?
- Name the CLI command that runs tests.
Track summary
You covered C# language fundamentals, OOP, collections, LINQ, modern features, CLR tooling, and interview context. Continue with local dotnet new projects and explore the ASP.NET track for web APIs or Unity Hub for game scripting with C#.
Next steps
- Build a class library + console app solution locally
- Practice LINQ and async on exercism.org or Advent of Code in C#
- Compare patterns with Java, Python, and C++ tracks
- Advance to ASP.NET for HTTP, MVC, and EF Core
Tip: Treat nullable warnings as errors in CI once the codebase is clean—<Nullable>enable</Nullable> pays off at scale. This lesson also closes the track—next stop: ASP.NET.
Interview prep
- Why treat warnings as errors in CI?
Nullable and analyzer warnings often indicate real bugs—blocking merge prevents silent regressions.
- dotnet test in CI?
Automated tests catch regressions before deploy—run on every pull request alongside build.
- What to practice next?
Multi-project solutions with tests, LINQ exercises, and reading modern C# code—then continue to the ASP.NET track.