What is the difference between C#, .NET, IL and JIT?
Explains the differences between C#, .NET, IL, and the JIT compiler, detailing their roles in the .NET development stack.
Steven Giesel is a Senior Software Engineer and Microsoft MVP with over 13 years of experience, specializing in .NET and modern backend development. He shares deep technical knowledge across topics such as C#, EF Core, RavenDB, distributed systems, and cloud-native architectures, and is an active speaker in the .NET community.
323 articles from this blog
Explains the differences between C#, .NET, IL, and the JIT compiler, detailing their roles in the .NET development stack.
Explains C# delegates, including Action, Func, Predicate, and lambda expressions, and how they are used to pass methods.
Explains the .NET Garbage Collector's compacting phase, its performance benefits, and the Large Object Heap (LOH).
Explains the ObjectPool pattern in C# for performance optimization, showing how to reuse expensive objects to reduce garbage collection overhead.
A tutorial on creating an RSS feed for a blog or website using Blazor and the System.ServiceModel.Syndication package in ASP.NET Core.
A guide to unit testing applications that use the RavenDB document database in .NET, covering setup and repository patterns.
A deep dive into how the .NET Garbage Collector works, explaining its phases, generations, and impact on application performance.
Explains how to implement CancellationToken support in Blazor applications to cancel long-running tasks and manage resources when users navigate away.
Explains why using finalizers in C# is problematic and advocates for IDisposable for deterministic resource cleanup.
Explains tail-recursion using the Fibonacci series in C#, comparing performance and stack usage with regular recursion.
Explores the performance benefits of sealed classes in C#, focusing on virtual dispatch and type checking, with benchmark results.
Explores the performance differences between passing by value and by reference in C#, focusing on structs, copying costs, and dereferencing overhead.
Explains the difference between ReadOnlyCollection and truly immutable collections in C#, showing how underlying data can still change.
Explores the pitfalls of using public const in C#, explaining compile-time replacement and versioning issues, and suggests using static readonly instead.
A tutorial on creating a reusable modal dialog component using Bootstrap in a Blazor application.
Explores four methods for creating arrays in C#, comparing performance and use cases for new, ArrayPool, GC.AllocateArray, and GC.AllocateUninitializedArray.
Explains the difference between default(MyStruct) and new MyStruct() in C# 10, highlighting that default bypasses parameterless constructors.
A technical guide on building a fully automated CI/CD pipeline using GitHub Actions, DocFx, and .NET to test, build, release, and document with one click.
Explains the differences between struct, readonly struct, ref struct, and record struct in C#, focusing on usage, limitations, and memory management.
A guide to creating a low-allocation, faster StringBuilder alternative in C# using Span<T> for improved performance in string concatenation.