2014-02-05 63 views
1

我對GetEnumerator方法執行感到困惑。我想知道GetEnumberator方法在什麼時候執行。我有一個類A,它有2或3個屬性,並且其中一個屬性正在GetEnumerator方法中使用。如果我將一個新值賦給A類對象的該屬性,然後將相同的對象賦給某個名副其實的名稱。然後我可以看到更改ResultView值。這意味着當我分配該對象時,GetEnumerator方法在後端執行。如果我錯了,請澄清我。GetEnumerator方法在什麼時候執行?

回答

3

GetEnumerator在枚舉實例時被調用。通常,這是在foreach子句的開頭,並且經常在LINQ中。

在調試器中,當您展開實例上的結果視圖時,也會調用此方法,就像剛發現的那樣。它甚至警告你它會這樣做。所以不行,當你改變屬性時它不會被調用 - 當你開始再次讀取enumerable時它只會被調用 - 你在調試器本身中執行的操作。

+0

我做了一些測試,發現如果我改變一個屬性,並且在GetEnumerator方法定義中使用相同的屬性,那麼GenEnumertaor方法就會執行。我寫了一個示例程序,如果你想,我可以與你分享。 – User1551892

+0

@ User1551892將示例代碼放在您的問題中 - 將其簡化爲顯示行爲所需的最小代碼。 – Luaan

相關問題