- Loading...
Sponsored by Dometrain Courses—Get 30% off Dometrain Pro with code ANDREW30 and access the best courses for .NET Developers

My new book ASP.NET Core in Action, Third Edition is available now! It supports .NET 7.0, and is available as an eBook or paperback.

New features in Git 2.54: easier rebasing, hooks, and statistics
In this post I show some of the new features in Git 2.54 including simple rebases with git history, config-based hooks, and stats with git repo structure…
![Banner image for Removing byte[] allocations in .NET Framework using ReadOnlySpan<T>](/content/images/2026/readonlyspan_banner.png)
Removing byte[] allocations in .NET Framework using ReadOnlySpan<T>
In this post I describe how to remove static byte[] allocations, even on .NET Framework, by using Span<T>, look at the associated IL, and discuss the risks…

Making foreach on an IEnumerable allocation-free using reflection and dynamic methods
In this post I describe why foreach sometimes allocates, and show how you can use DynamicMethod and Reflection.Emit to go allocation-free…

Creating a .NET CLR profiler using C# and NativeAOT with Silhouette
In this post I look at how to create a simple .NET profiler. But instead of using C++, the profiler uses C# and NativeAOT with the Silhouette library…
![Banner image for Easier reflection with [UnsafeAccessorType] in .NET 10](/content/images/2025/unsafe_accessor_banner.png)
Easier reflection with [UnsafeAccessorType] in .NET 10
Exploring the .NET 10 preview - Part 9
In this post I show how to work with [UnsafeAccessor] to do 'easier' reflection and how to use .NET 10's [UnsafeAccessorType] with types you can't reference…

Using default interface methods for performance gains in IHeaderDictionary
In this post I look at an example of how default interfaces were used to improve the performance of IHeaderDictionary…

