更新:2007 年 11 月
此示例演示 Microsoft Visual Studio 2005 引入的一个功能,即更改在调试窗口中查看类的方式。通过将 DebuggerDisplayAttribute 等新属性应用于类及其成员,您可以控制如何在“局部变量”调试窗口中显示该类型的值、类型和名称列,并可控制在查看时是否显示、隐藏或展开某个值。此示例目前只在 Microsoft Visual C# 2005 中可用。
有关使用这些示例的信息,请参见下面的主题:
此示例包括三个类的包含调试器属性的源文件和不包含调试器属性的源文件,如下表所示。
| 包含调试器属性的文件 | 不包含调试器属性的文件 | 
|---|---|
| DebugAddress.cs | NonDebugAddress.cs | 
| DebugCustomer.cs | NonDebugCustomer.cs | 
| DebugCustomerName.cs | NonDebugCustomerName.cs | 
DebuggerViewsExample.cs 文件包含控制台应用程序的入口点,并由两组文件共同使用。取消对调试版本(DebugAddress.cs、DebugCustomer.cs 和 DebugCustomerName.cs)中的代码的注释,以运行示例。
使用命令提示生成示例
- 打开命令提示窗口,然后定位到 DebuggerViewsCS 目录下的 \CS 子目录。有关所需设置和 SDK 命令提示的信息,请参见如何:设置示例设置。 
- 在命令行上键入 msbuild DebuggerViewsCS.sln。 .gif) 说明: 说明:- 此示例演示了 Visual Studio 的一些功能。必须在 Visual Studio 调试环境中启动并运行此示例后才可查看其输出。 
使用 Visual Studio 生成示例
- 打开 Windows 资源管理器,然后定位到 DebuggerViewsCS 目录下的 \CS 子目录。 
- 双击 DebuggerViewsCS.sln 以在 Visual Studio 2005 中打开该文件。 
- 在“生成”菜单上单击“生成解决方案”。 
运行示例
- 在 Visual Studio 的“视图”菜单上,单击“解决方案资源管理器”。 
- 在“解决方案资源管理器”窗口中,双击 DebuggerViewsExample.cs 以在 Visual Studio 2005 中打开该文件。 
- 在“项目”菜单上,单击“显示所有文件”。 
- 在 GetCustomers 方法实例化 Customer 类型的变量的行上插入一个断点(按 F9),如下所示: - Customer c = new Customer(cn, Address.GetAddressById(customerAddresses, cn.Id)); 
- 按 F5 在 Visual Studio 2005 调试环境中启动并运行示例应用程序。 
- 当应用程序在断点处中断时,按 F10 单步执行至下一行代码。 
- 通过展开应用程序的属性、集合以及其他对象的层次结构,观察“局部变量”窗口中的当前值。若要显示“局部变量”窗口,请在“调试”菜单中单击“窗口”,再单击“局部变量”。 
- 在“调试”菜单上单击“停止调试”,再按 Shift+F5 或单击“调试”工具栏中的图标,以停止执行代码。 
- 取消对名称以 Debug 开头的三个文件中的代码的注释。然后,注释掉名称以 NonDebug 开头的三个文件中的代码,或在“解决方案资源管理器”窗口中选择这三个文件,右击它们,然后单击“从项目中排除”。 
- 设置同样的断点,然后在“调试”菜单上选择“启动”。当应用程序中断时,观察“局部变量”窗口中值列的详细信息,该列现在有了调试属性提供的附加信息。 
备注
为了提供使用调试属性的示例,DebugCustomer.cs 文件包含 CustomerName 类的以下 DebuggerDisplay 属性:
[DebuggerDisplay("{(FirstName == null) ? \"\":FirstName} {LastName} ==> (Customer ID = {Id})")]
调试时,此属性在“局部变量”窗口中显示下面的值。名称 cn 是 CustomerName 对象的一个实例。
| 名称 | 值 | 类型 | 
|---|---|---|
| cn | "Sally" "HighBridge" ==> (Customer ID = 12345) | Microsoft.Samples.CustomerName | 
若没有该属性,则“局部变量”窗口显示如下:
| 名称 | 值 | 类型 | 
|---|---|---|
| cn | {Microsoft.Samples.CustomerName} | Microsoft.Samples.CustomerName |