2009-07-08 52 views
2

在此代碼片段爲什麼不使用ASP.NET GridView.Rows屬性輸入推理(var)?

foreach (var row in grid.Rows) { }    

行的類型被推斷爲對象,而不是GridViewRow。我必須明確宣佈與GridViewRow工作類型:「返回包含在GridViewRowCollection所有GridViewRow對象枚舉」

foreach (GridViewRow row in grid.Rows) { } 

GridView.Rows返回GridViewRowCollection和GetEnumerator的關於收集如果我通過索引從集合中訪問單行

var row = grid.Rows[0]; 

該類型被正確推斷。爲什麼編譯器不能在foreach聲明中推斷行的類型?

編輯補充:有趣的回答,我沒有想到尋找明顯的問題。 ListView.Items實現IList<ListViewDataItem>,所以這看起來像對我來說是一個疏忽。

回答

3

因爲GridViewRowCollection實現非通用IEnumerableICollection接口,這是不強類型這樣的,但其Item屬性是強類型,並返回一個GridViewRow。很好的一個微軟!

+0

也許如果他們沒有趕上所有這些版本,他們將有時間來實際實現所有這些缺失的接口: – leppie 2009-07-08 13:45:04

3

Rows不執行IEnumerable<GridViewRow>

相關問題