NDepend Blog

Improve your .NET code quality with NDepend

C# DateTime Format In A Nutshell

May 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 May 16, 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

C# Pattern Matching Explained

May 13, 2025 7 minutes read   Since the C# version 7, C# has support for pattern matching. C# pattern matching is here to simplify complex if-else statements into more...
NDepend May 13, 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# Async/Await Explained: Complete Guide with Examples [2025]

March 20, 2025 9 minutes read In modern C# and .NET development, the introduction of async/await has been a game-changer. While synchronous execution works in many cases, it can cause...
NDepend March 20, 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

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

January 8, 2025 8 minutes read In the world of .NET development, two popular tools stand out: Visual Studio and Visual Studio Code. Visual Studio is generally recognized as a...
NDepend January 8, 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

.NET 9.0 LINQ Performance Improvements

November 19, 2024 5 minutes read NET 9.0 brings significant improvements to LINQ performance, with some scenarios showing remarkable gains. Let’s take a closer look at what’s driving these enhancements....
NDepend November 19, 2024

Alternate Lookup for Dictionary and HashSet in .NET 9

November 18, 2024 3 minutes read In .NET 9, a new method called GetAlternateLookup<TKey, TValue, TAlternate>() has been introduced for hash tables classes, including Dictionary<TKey, TValue>, HashSet<T>, ConcurrentDictionary<TKey, TValue>, FrozenDictionary<TKey,...
NDepend November 18, 2024

The Issue with using the Cobertura Code Coverage Format in .NET

November 14, 2024 1 minutes read Since December 2023, Microsoft has added support to Microsoft.CodeCoverage and dotnet-coverage for exporting code coverage data in the Cobertura format (see the announcement here). [crayon-682b317e8449b038384666/] Because...
NDepend November 14, 2024

Why Is Counting Lines of Code (LOC) Useful?

November 7, 2024 2 minutes read In the previous post How do you count your number of Lines Of Code (LOC) ?, we explained how to count the LOC of...
NDepend November 7, 2024

How do you count your number of Lines Of Code (LOC) ?

November 6, 2024 2 minutes read Counting Lines of Code (LOC) is not as straightforward as it seems. Developers often wonder: Should method signature declarations count? What about lines with...
NDepend November 6, 2024

The problem with frameworks

October 31, 2024 3 minutes read I just watched this short 2:39 video from Uncle Bob, and it rang a bell. His books inspired me two decades ago to create...
NDepend October 31, 2024

Find C# Code Duplicate

October 22, 2024 3 minutes read Duplicate code copy-pasted is problematic. It increases maintenance efforts and the risk of inconsistencies. Changes made in one instance may not be reflected in...
NDepend October 22, 2024

Cyclomatic Complexity in C#: Everything You Need to Know

October 21, 2024 3 minutes read Cyclomatic complexity is a code metric used to measure the complexity of a program’s control flow. In C#, it represents the number of independent...
Erik Dietrich October 21, 2024

NDepend vs. ReSharper

October 14, 2024 1 minutes read Not too long ago, someone asked me for a comparison of ReSharper (commonly and affectionately abbreviated R#) and NDepend.  I didn’t really grok the...
Erik Dietrich October 14, 2024

Reporting ReSharper Code Inspections from Your CI/CD Pipeline

October 11, 2024 4 minutes read JetBrains ReSharper is an awesome well-established tool now over two decades old! It offers hundreds of code inspections for C# and VB.NET. These inspections...
NDepend October 11, 2024

Faster Dictionary in C#

September 2, 2024 5 minutes read In the .NET Base Class Library, Dictionary<TKey, TValue> is an essential key-based hashtable providing constant time access to values. This means accessing dictionary[key] takes...
NDepend September 2, 2024

Fastest C# Enum to String

July 15, 2024 3 minutes read This article benchmarks various ways to obtain a string from an enumeration value in C# .NET, along with other common enumeration APIs. At NDepend,...
NDepend July 15, 2024