2016-11-01 35 views
0

我對c#沒有經驗,我想詢問是否有任何方法可以在不創建對象的情況下訪問非靜態字段?在不創建對象的情況下訪問非靜態字段

我是一個單元測試程序(所以我不能改變類的寫法),我的目標是獲得字段的初始化值。這裏的問題是構造函數改變了一些字段值。

我非常感謝任何建議。

+0

雖然它不是你想要的,但你可以有兩個構造函數,它們是重載的 - 然後當你需要原始值時調用第二個構造函數,它將不會修改任何值 –

+8

這意味着什麼?實例字段不存在*直到存在該類型的對象。 –

+1

你能不用狗養狗嗎? :)回答你的'構造函數改變了一些領域'問題:這是編程的工作原理。如果程序員決定讓這個類以這種方式工作,那麼你需要使用它。如果它看起來不合適或不可測試,你需要告訴你的開發人員(或你自己?):) –

回答

1

這是不可能的,因爲按照定義非靜態字段屬於某個對象。但是,有一種方法可以在不調用其構造函數的情況下創建對象 - 請參閱this question

1

沒有創建對象就無法訪問非靜態字段。

實現您的目標的唯一方法是編寫一個不執行更改的構造函數。

雖然第二個想法:如果更改是構造函數的一部分,那麼檢查初始值是沒有意義的。從使用此類對象的客戶端對象的角度來看,這些更改不起作用,因爲在調用此對象之前,構造函數將被完全執行。

+0

好吧,有幾個構造函數,它們中的每一個都做了些微不同的事情。最重要的是,田地改變的方式來自外部領域。所以它不像它是以固定值初始化的。 –

相關問題