Tired of seeing {MyApp.Models.Customer} when checking objects in Visual Studio? [DebuggerDisplay] can help.
Added in .NET Framework 2.0 and still supported in modern .NET (Core, 5–9), it lets you control how objects show up in the debugger, making it easier to understand your data.
The source code can be downloaded from GitHub
The tools that I have used below:
VS 2026 Insider
.NET 9.0
Console App
Example
using System.Diagnostics;
namespace DebuggerDisplayExample
{
[DebuggerDisplay("Name = {Name}, Age = {Age}, FavoriteLanguage = {FavoriteLanguage}")]
internal class Developer
{
public string Name { get; set; }
public int Age { get; set; }
public string FavoriteLanguage { get; set; }
public Developer(string name, int age, string favoriteLanguage)
{
Name = name;
Age = age;
FavoriteLanguage = favoriteLanguage;
}
[DebuggerDisplay("{DebuggerDisplay,nq}")]
private string DebuggerDisplay => $"Name = {Name}, Age = {Age}, FavoriteLanguage = {FavoriteLanguage}";
}
}
Hovering over a developer now shows as below:
![DebuggerDisplayExample_01]()
Much clearer than the default type name.
For more complex objects, use a private helper property with nq to remove quotes:
![DebuggerDisplayExample_02]()
Why Use It
Makes debugging collections and domain models faster.
Shows a clear, readable summary without changing your code at runtime.
Supported in all .NET versions from 2.0 to 9.0.
Even after 20 years, [DebuggerDisplay] is a tiny feature that makes a big difference—it shows that small improvements today, like making objects easier to read in the debugger, can save you a lot of time and frustration later.
Happy Coding!