NDepend Blog

Improve your .NET code quality with NDepend

.NET 10.0 dotnet run app.cs or file-based program

August 13, 2025 5 minutes read This post covers a new .NET 10 feature that lets you build and run a single C# file without creating a .csproj project file....
NDepend August 13, 2025

C# 14 Extension Members: Also Known as Extension Everything

August 12, 2025 4 minutes read C# 14 introduces extension members — also known as extension everything. The New C# 14 Extension Method Syntax The example below demonstrates how to...
NDepend August 12, 2025

Modern C# Hello World

August 11, 2025 6 minutes read With Visual Studio 2022 when you create a new console project based on .NET 6 or upper, the Hello World source code generated is ...
NDepend August 11, 2025

.NET Native AOT Explained

August 5, 2025 7 minutes read Within the realm of software development, optimizing performance and streamlining efficiency remain essential. The .NET platform has been innovating for 2 decades to provide...
NDepend August 5, 2025

C# ValueTuple Full Guide

July 28, 2025 9 minutes read C# 7.0 introduced ValueTuple in 2017, making it easier to work with lightweight data structures.Here’s an example using ValueTuple with the () syntax to...
NDepend July 28, 2025

What the Singleton Pattern Costs You

July 17, 2025 2 minutes read Do you use the singleton pattern?  If not, I’m assuming that you either don’t know what it is or that you deliberately avoid it....
Erik Dietrich July 17, 2025

C# Async/Await Explained: Complete Guide with Examples [2025]

July 14, 2025 9 minutes read Mastering async / await in C# is key to building fast, scalable .NET apps. Introduced in C# 5 in 2012, these keywords transformed how...
NDepend July 14, 2025

Architecture of a .NET Application: 8 Case Studies

July 10, 2025 8 minutes read This recent question on Reddit’s Number of projects per solution led to interesting debates. The answer depends on the app’s size and domain. In...
NDepend July 10, 2025

Clean Architecture in ASP.NET Core

July 7, 2025 9 minutes read As applications scale, flexibility and maintainability become essential. .NET Core Clean Architecture provides a clear structure with minimal dependencies, making it a popular choice....
NDepend July 7, 2025

Understand Directory.Build.props: Centralizing .NET Project Configurations

July 3, 2025 4 minutes read In the world of .NET development, managing project configurations and properties efficiently can significantly streamline your development process. One powerful but often underappreciated feature...
NDepend July 3, 2025

C# Pattern Matching Explained (2025)

June 17, 2025 7 minutes read   Pattern matching in C# involves assessing an expression to see if it fits one or several particular condition—like checking if it’s of a...
NDepend June 17, 2025

C# DateTime Format In A Nutshell

June 16, 2025 7 minutes read This article covers C# DateTime Format, addressing both of its main aspects: Obtain a date-formatted string. Use a pattern like "yyyy-MM-dd HH:mm:ss" to extract and...
NDepend June 16, 2025

Vertical Slice Architecture in ASP.NET Core

June 10, 2025 6 minutes read The organization of code in a solution is a subject of frequent debates. Currently, two prominent approaches have garnered attention: Clean Architecture versus Vertical...
NDepend June 10, 2025

Visual Studio vs Visual Studio Code: The Ultimate Guide (2025)

June 1, 2025 8 minutes read Despite their similar name, Visual Studio and Visual Studio Code are two distinct products created by Microsoft. Visual Studio is a full-featured Integrated Development...
NDepend June 1, 2025

C# Index and Range Operators Explained

May 24, 2025 3 minutes read In this post, we comprehensively demystify the C# index ^ and range .. operators. The index operator ^ Let’s start with the index ^...
NDepend May 24, 2025

Abstract Class vs Interface in C#

May 21, 2025 7 minutes read In C# object-oriented programming (OOP), understanding the difference between Abstract Class vs Interface is essential for designing flexible and maintainable code. Both abstract classes...
NDepend May 21, 2025

C# String Interpolation Explained

May 14, 2025 4 minutes read C# String Interpolation is a powerful feature that simplifies the syntax for embedding variables and expressions within strings to construct strings dynamically. String interpolation...
NDepend May 14, 2025

WPF vs WinForms – Making the Right Decision in 2025

May 12, 2025 8 minutes read If you’re a developer faced with the decision of selecting between Windows Presentation Foundation (WPF) and Windows Forms (WinForms) commonly referred to as WPF...
NDepend May 12, 2025

Class vs Struct in C#: Making Informed Choices

May 11, 2025 9 minutes read In C# programming, choosing the right data type between classes and structs is a crucial decision that impacts application performance and design. Choosing Between Struct...
NDepend May 11, 2025

Improve C# code performance with Span<T>

March 24, 2025 9 minutes read Welcome to our deep dive into System.Span<T> and System.ReadOnlySpan<T>. Introduced in C# 7.2 (2017) and supported by the .NET Core runtime, these powerful structures...
NDepend March 24, 2025

C# Optional Parameters Explained

March 18, 2025 3 minutes read C# optional parameters enable methods, constructors, indexers and delegates to be called without specifying all arguments. This simplifies method calls and improves readability by...
NDepend March 18, 2025

.slnx The New .NET Solution XML File Format

March 17, 2025 3 minutes read On March 13th, 2025 Microsoft officially announced the a new .NET solution file format with file extension .slnx. For example for this simple solution:...
NDepend March 17, 2025

Understand NuGet Central Package Management and Transitive Pinning with Examples

January 16, 2025 4 minutes read Nowadays, .NET  applications often rely on numerous NuGet packages, each of which may depend on additional packages. As a result, it’s common for multiple...
NDepend January 16, 2025

.NET – 7 Decompiler Compared (2025)

January 10, 2025 9 minutes read Looking to reverse engineer or disassemble some .NET code? Then learning how to decompile .NET assemblies is an essential skill for any .NET developer...
NDepend January 10, 2025

C# Array and List Fastest Loop in 2025

January 9, 2025 5 minutes read Discussions about the fastest way to loop through an array (T[]) and a List<T> in C# have been ongoing. Results can vary with each...
NDepend January 9, 2025

A Guide to Code Coverage Tools for C# in 2025

January 6, 2025 3 minutes read In this post, we’ll go through 8 different .NET code coverage tools and list their features to help you make a decision. But first,...
Erik Dietrich January 6, 2025

The attribute OverloadResolutionPriority in .NET 9 and C# 13

December 12, 2024 2 minutes read With .NET 9, we gain a new tool for managing method overloads: OverloadResolutionPriorityAttribute declared in the namespace System.Runtime.CompilerServices. It lets you set an overload’s...
NDepend December 12, 2024

C# 13 Semi-Auto Properties

December 4, 2024 2 minutes read C# 13 introduced an exciting feature to boost developer productivity and code clarity: semi-auto properties. This new feature solves the trade-off between the ease...
NDepend December 4, 2024

C# 13 params collections

December 3, 2024 3 minutes read Here is a quick post to explain how the upcoming C# 13 params collections feature frees your code from many allocations. C# params prior...
NDepend December 3, 2024

C# 13 ref struct interfaces and the ‘allows ref struct’ generic anti-constraint

December 2, 2024 4 minutes read C# 13 will allow interfaces on ref struct. Until now, without this possibility ref struct missed out on abstraction. For example, while Span<T> acts...
NDepend December 2, 2024