Cast<T> 將 IEnumerable 轉為 IEnumerable<T>,解鎖 LINQ 查詢能力。MSDN 僅示範 ArrayList,實際應用遠不止於此。
ListView.Items、ComboBox.Items、DataGridView.SelectedRows/Columns/Cells、TreeNode.Nodes、Control.Controls 均為非泛型集合,適用 Cast<T>。
// DataGridView 選中列處理(最高頻場景)
var rows = dataGridView.SelectedRows.Cast<DataGridViewRow>();
int avgAge = rows.Cast<Employee>().Average(p => p.Age);
string[] cities = rows.Cast<Employee>().Select(p => p.City).Distinct().ToArray();
// 所有控制項遞迴處理
var allControls = this.Controls.Cast<Control>();
ArrayList fruits = new ArrayList();
fruits.Add("apple"); fruits.Add("mango");
IEnumerable<string> query = fruits.Cast<string>();
善用 Cast<T> 可大幅精簡 WinForms 非泛型集合的查詢與處理程式碼。