Visual Studio自訂調試表單兩個小技巧

來源:互聯網
上載者:User

    這篇文章講述如何自訂你的調試表單。這些技巧在你調試應用程式的時候是非常有用的。當你調試的時候,你可能希望簡化調試表單的資訊,或者在調試表單上除去對你不重要的不必要的資訊,這篇文章將會協助到你。本文翻譯:Few Tips on Customizing Debugging Window View in Visual Studio 。

    使用DebuggerBrowsable特性可以自訂調試表單。

    使用DebuggerDisplay特性可以自訂調試資訊的顯示。

    要使用這些特性,需要引用System.Diagnostics命名空間。

   技巧1、使用DebuggerBrowsable特性

    你可以通過在屬性上使用DebuggerBrowsable特性來自訂調試表單。這些特性可以用任何屬性、欄位和索引上。DebuggerBrowsable的建構函式需要一個DebuggerBrowsableState 參數。DebuggerBrowsableState用來指定調試資訊在表單上顯示的方式。

    它有三個狀態:

        1、Collapsed :如果設定DebuggerBrowsableState為Collapsed 。那麼調試資訊摺疊顯示。預設為Collapsed

        2、Never :調試表單不顯示調試資訊  

        3、RootHidden :隱藏調試資訊的根項目,只顯示子項目資訊,想瞭解更多,看MSDN。

    下面我將通過一個例子敘述如何使用DebuggerBrowsable 和DebuggerBrowsableState。開始之前,看下面這段代碼:

    class Program    {        static void Main(string[] args)        {            List<Student> student = new List<Student>();            student.Add(new Student { Roll = 1, Name = "Abhijit", Marks = 87, Addresses = new Address { Address1 = "add1", Address2 = "add2" } });            student.Add(new Student { Roll = 2, Name = "Abhishek", Marks = 41, Addresses = new Address { Address1 = "add3", Address2 = "add4" } });            student.Add(new Student { Roll = 3, Name = "Rahul", Marks = 67, Addresses = new Address { Address1 = "add5", Address2 = "" } });            student.Add(new Student { Roll = 4, Name = "Sunil", Marks = 91, Addresses = new Address { Address1 = "add11", Address2 = "add122" } });            student.Add(new Student { Roll = 5, Name = "Atul", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } });            student.Add(new Student { Roll = 6, Name = "Kunal", Marks = 71, Addresses = new Address { Address1 = "add12", Address2 = "add222" } });        }        /// <summary>        /// Student Class        /// </summary>        class Student        {            public int Roll { get; set; }            public string Name { get; set; }            public int Marks { get; set; }            public Address Addresses { get; set; }        }        /// <summary>        /// Address of Students        /// </summary>        class Address        {            public string Address1 { get; set; }            public string Address2 { get; set; }        }    }

下面,先看一下不使用這些特性是什麼樣的效果。我在main 函數的結尾放置一個斷點。你可以得到下面的調試表單。

     從中可以看到有6個student對象,每個對象的值都不同。Addresses是類Address的對象,它的調試資訊值是隱藏的。

     現在,我想要看到address的所有屬性資訊,隱藏Marks 屬性。為了實現這樣的需求,需要為給student 類中的Marks 和Addresses屬性添加DebuggerBrowsable特性。

     調試資訊顯示如:

 技巧2、使用DebuggerDisplay特性

    使用DebuggerDisplay可以定義類和欄位在調試表單中如何顯示。使用 DebuggerDisplay可以改變調試表單中顯示的資訊和變數,使它顯示你想要的資訊。

看下面沒有使用DebuggerDisplay 的調試表單。

預設情況下,每一個study對象你只得到NameSpace.ClassName這樣的顯示資訊。我們可以使用DebuggerDisplay來自訂顯示的資訊。 DebuggerDisplay  建構函式需要顯示名作為參數。你可以傳遞指定參數來顯示。做如下設定:

看下效果:

    使用DebuggerDisplay的時候必須注意,在{}中必須給出類的正確屬性。

    如我將Roll寫成Rolls,如:

   調試表單會提示:The name 'Rolls' does not exist in the current context。如:

 

總結:本文講述了使用DebuggerBrowsable 和DebuggerDisplay兩個特性來自訂調試表單的顯示。當你調試一個非常複雜的對象時,這個是非常有用的,它可以使你的調試表單非常簡單。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.