Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

DebuggerDisplayAttribute Class

Definition

Namespace:
System.Diagnostics
Assemblies:
mscorlib.dll, System.Diagnostics.Debug.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Diagnostics.Debug.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
DebuggerDisplayAttribute.cs
Source:
DebuggerDisplayAttribute.cs
Source:
DebuggerDisplayAttribute.cs
Source:
DebuggerDisplayAttribute.cs
Source:
DebuggerDisplayAttribute.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Determines how a class or field is displayed in the debugger variable windows.

public ref class DebuggerDisplayAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Property | System.AttributeTargets.Struct, AllowMultiple=true)]
public sealed class DebuggerDisplayAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Property | System.AttributeTargets.Struct, AllowMultiple=true)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DebuggerDisplayAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Property | System.AttributeTargets.Struct, AllowMultiple=true)>]
type DebuggerDisplayAttribute = class
 inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Property | System.AttributeTargets.Struct, AllowMultiple=true)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DebuggerDisplayAttribute = class
 inherit Attribute
Public NotInheritable Class DebuggerDisplayAttribute
Inherits Attribute
Inheritance
DebuggerDisplayAttribute
Attributes

Examples

View the following example in Visual Studio to see the results of applying the DebuggerDisplayAttribute.

using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;

class DebugViewTest
{
 // The following constant will appear in the debug window for DebugViewTest.
 const string TabString = " ";
 // The following DebuggerBrowsableAttribute prevents the property following it
 // from appearing in the debug window for the class.
 [DebuggerBrowsable(DebuggerBrowsableState.Never)]
 public static string y = "Test String";

 static void Main()
 {
 MyHashtable myHashTable = new MyHashtable();
 myHashTable.Add("one", 1);
 myHashTable.Add("two", 2);
 Console.WriteLine(myHashTable.ToString());
 Console.WriteLine("In Main.");
 }
}
[DebuggerDisplay("{value}", Name = "{key}")]
internal class KeyValuePairs
{
 private IDictionary dictionary;
 private object key;
 private object value;

 public KeyValuePairs(IDictionary dictionary, object key, object value)
 {
 this.value = value;
 this.key = key;
 this.dictionary = dictionary;
 }
}
[DebuggerDisplay("Count = {Count}")]
[DebuggerTypeProxy(typeof(HashtableDebugView))]
class MyHashtable : Hashtable
{
 private const string TestString = "This should not appear in the debug window.";

 internal class HashtableDebugView
 {
 private Hashtable hashtable;
 public const string TestString = "This should appear in the debug window.";
 public HashtableDebugView(Hashtable hashtable)
 {
 this.hashtable = hashtable;
 }

 [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
 public KeyValuePairs[] Keys
 {
 get
 {
 KeyValuePairs[] keys = new KeyValuePairs[hashtable.Count];

 int i = 0;
 foreach(object key in hashtable.Keys)
 {
 keys[i] = new KeyValuePairs(hashtable, key, hashtable[key]);
 i++;
 }
 return keys;
 }
 }
 }
}
Imports System.Collections
Imports System.Diagnostics
Imports System.Reflection



Class DebugViewTest
 ' The following constant will appear in the debug window for DebugViewTest.
 Const TabString As String = " "
 ' The following DebuggerBrowsableAttribute prevents the property following it
 ' from appearing in the debug window for the class.
 <DebuggerBrowsable(DebuggerBrowsableState.Never)> _
 Public Shared y As String = "Test String"

 Shared Sub Main() 
 Dim myHashTable As New MyHashtable()
 myHashTable.Add("one", 1)
 myHashTable.Add("two", 2)
 Console.WriteLine(myHashTable.ToString())
 Console.WriteLine("In Main.")

 End Sub
End Class
<DebuggerDisplay("{value}", Name := "{key}")> _
Friend Class KeyValuePairs
 Private dictionary As IDictionary
 Private key As Object
 Private value As Object
 
 
 Public Sub New(ByVal dictionary As IDictionary, ByVal key As Object, ByVal value As Object) 
 Me.value = value
 Me.key = key
 Me.dictionary = dictionary

 End Sub
End Class
<DebuggerDisplay("Count = {Count}"), DebuggerTypeProxy(GetType(MyHashtable.HashtableDebugView))> _
Class MyHashtable
 Inherits Hashtable
 Private Const TestString As String = "This should not appear in the debug window."

 Friend Class HashtableDebugView
 Private hashtable As Hashtable
 Public Shared TestString As String = "This should appear in the debug window."

 Public Sub New(ByVal hashtable As Hashtable)
 Me.hashtable = hashtable
 End Sub

 <DebuggerBrowsable(DebuggerBrowsableState.RootHidden)> _
 ReadOnly Property Keys as KeyValuePairs()
 Get
 Dim nkeys(hashtable.Count) as KeyValuePairs

 Dim i as Integer = 0
 For Each key As Object In hashtable.Keys
 nkeys(i) = New KeyValuePairs(hashtable, key, hashtable(key))
 i = i + 1
 Next
 Return nkeys
 End Get
 End Property

 End Class
End Class

Remarks

The DebuggerDisplayAttribute constructor has a single argument: a string to be displayed in the value column for instances of the type. This string can contain braces ({ and }). The text within a pair of braces is evaluated as the name of a field, property, or method. For example, the following C# code causes "Count = 4" to be displayed when the plus sign (+) is selected to expand the debugger display for an instance of MyHashtable.

[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
 public int count = 4;
}

For information about using this attribute in Visual Studio, see Using the DebuggerDisplay Attribute.

Constructors

Name Description
DebuggerDisplayAttribute(String)

Initializes a new instance of the DebuggerDisplayAttribute class.

Properties

Name Description
Name

Gets or sets the name to display in the debugger variable windows.

Target

Gets or sets the type of the attribute's target.

TargetTypeName

Gets or sets the type name of the attribute's target.

Type

Gets or sets the string to display in the type column of the debugger variable windows.

TypeId

When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value

Gets the string to display in the value column of the debugger variable windows.

Methods

Name Description
Equals(Object)

Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode()

Returns the hash code for this instance.

(Inherited from Attribute)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute()

When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object)

When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Returns a string that represents the current object.

(Inherited from Object)

Explicit Interface Implementations

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Applies to


Feedback

Was this page helpful?