2009-07-08 6 views
2

이 코드 조각에서왜 inference (var) 형식의 ASP.NET GridView.Rows 속성을 사용할 수 없습니까?

foreach (var row in grid.Rows) { }    

행 유형은 GridViewRow 대신 Object로 유추됩니다. 내가 명시 적으로 GridViewRow 함께 작동하도록 형식을 선언해야합니다.

foreach (GridViewRow row in grid.Rows) { } 

GridView.Rows "GridViewRowCollection있는 모든 GridViewRow 개체를 포함하는 열거 자 반환합니다."컬렉션의 GridViewRowCollection 및 GetEnumerator를 반환합니다. 인덱스

var row = grid.Rows[0]; 

로 컬렉션에서 단일 행에 액세스하면 형식이 올바르게 유추됩니다. 컴파일러가 foreach 선언에서 행의 유형을 추론 할 수없는 이유는 무엇입니까?

추가 편집 : 재미있는 응답, 나는 명백한 문제를 찾지 않을 것이라고 생각했습니다. ListView.Items는 IList<ListViewDataItem>를 구현하므로이 기능이 나를 감시하는 것처럼 보입니다.

답변

3

GridViewRowCollection 때문에이 같은 강력한 형식되지 않은 제네릭이 아닌 IEnumerableICollection 인터페이스를 구현하지만 그 Item 속성은 강력하게 형식화되고 GridViewRow를 반환합니다. 좋은 마이크로 소프트!

+0

만약 그들이이 모든 버전을 돌진하지 못했다면 실제로 누락 된 모든 인터페이스를 구현할 시간이있었습니다. – leppie

3

RowsIEnumerable<GridViewRow>을 구현하지 않습니다.

관련 문제