我想知道是否有任何方法可以在自動構造函數/對象初始化塊中放置斷點?我如何分解C#自動構造函數塊?
例子:
var x = new Person()
{
Name = 'John',
Age = DateTime.Now - Birthdate
}
我希望把斷點4號線。當爲每個屬性設置150個不同邏輯的字段並且您創建實例的類型不受您的控制(例如EF4實體)時,這非常有用,因此您無法創建自定義構造函數。有任何想法嗎?
我想知道是否有任何方法可以在自動構造函數/對象初始化塊中放置斷點?我如何分解C#自動構造函數塊?
例子:
var x = new Person()
{
Name = 'John',
Age = DateTime.Now - Birthdate
}
我希望把斷點4號線。當爲每個屬性設置150個不同邏輯的字段並且您創建實例的類型不受您的控制(例如EF4實體)時,這非常有用,因此您無法創建自定義構造函數。有任何想法嗎?
一種變通方法,你可以使用這個問題寫這樣的代碼,以減輕你的調試:
var x = new Person();
x.Name = "John";
x.Age = DateTime.Now - Birthdate;
如果你這樣做,然後這樣,你不能。您可以在整個塊上輸出一個斷點,然後使用F11逐步執行。
你爲什麼不這樣做就行,你想在一個自調用函數斷點以下
Person p = new Person();
p.Name = "John";
p.//Blah
裹值:
var x = new Person() {
Name = new Func<string>(() =>"John").Invoke(),
Age = DateTime.Now - Birthdate
};
現在,您將能夠「一步成「它。儘管如此,它並沒有多大用處,因爲在塊結束之前x將保持爲空。
如果Name
屬性不是自動的,你可以在該屬性的set
中放置一個斷點。
可能的重複[如何正確使用斷點時使用花哨的對象初始化](http://stackoverflow.com/questions/5112782/how-can-i-properly-use-breakpoints-when-using-fancy-對象初始化器) – 2012-02-16 07:48:59
Nitpick - 這被稱爲對象初始化器。重要的是要注意,這些屬性不是在施工時設定的。施工後立即設置。這只是用於創建實例的語法糖(在上例中使用默認構造函數),然後立即分配屬性。 – 2012-02-16 07:54:53
Nitpickier :) - 與之不同的是:在對象初始值設定項下,在表面下創建一個臨時對象,將所有屬性設置爲可見對象(人)。不同的是,在未定義的狀態下永遠不會有人物對象。 – 2012-02-16 08:18:21