偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

概述C# Cast<T>

開發(fā) 后端
這里介紹用了C# Cast<T>,我們的代碼很精簡。Cast<T>甚至還可以用在所有控件的基類Control上,它的Controls屬性也是非泛型的!

窗體控件中是有個(gè)List控件(ASP.Net)和一個(gè)ListView控件(WinForm)。

就以ListView為例子吧,ListView控件可以包含很多項(xiàng),也可以說是一個(gè)集合,就讓我們來看看它的Items屬性吧!

  1. public class ListView : Control{  
  2. public ListView.ListViewItemCollection Items { get; }  
  3. public class ListViewItemCollection : IList, ICollection, IEnumerable {    
  4. }  

ListView的Items類型是ListView.ListViewItemCollection,這個(gè)ListViewItemCollection實(shí)現(xiàn)了IEnumerable。ListView.Items正是一個(gè)非泛型的集合,因此可以應(yīng)用Cast<T>。以下代碼假定 listBox 數(shù)據(jù)綁定在一個(gè)Employee的集合上:

  1. int count = listBox.Items.Cast<Employee>().Count();  
  2. bool b = listBox.Items.Cast<Employee>().Any(e => e.FirstName == "Bob"); 

同樣C# Cast<T>可以用在ComboBox、DataGridView、TreeNode上:

  1. //ComboBox  
  2. var v1 = comboBox.Items.Cast<People>();  
  3. //DataGridView  
  4. var v2 = dataGridView.SelectedRows.Cast<DataGridViewRow>();  
  5. var v3 = dataGridView.SelectedColumns.Cast<DataGridViewColumn>();  
  6. var v4 = dataGridView.SelectedCells.Cast<DataGridViewCell>();  
  7. //TreeNode  
  8. var v5 = treeNode.Nodes.Cast<TreeNode>(); 

這幾個(gè)應(yīng)用中應(yīng)該第 4 行的應(yīng)用最多,獲取選中行是DataGridView使用最頻繁的操作之一。試看下面代碼:

  1. //計(jì)算平均年齡  
  2. int age = dataGridView.SelectedRows.
    Cast
    <Employee>().Average(p=>p.Age);  
  3. //統(tǒng)計(jì)所在城市  
  4. string[] cities = dataGridView.SelectedRows.
    Cast
    <Employee>().Select(p => p.City).Distinct(); 

用了C# Cast<T>,我們的代碼很精簡。Cast<T>甚至還可以用在所有控件的基類Control上,它的Controls屬性也是非泛型的!

  1. //Control  
  2. var v6 = control.Controls.Cast<Control>(); 

看來C# Cast<T>好像是為 Control 準(zhǔn)備,Control 類和Control 的派生類多處使用了非泛型。可現(xiàn)在都用vs2008(甚至vs2010)了,那為什么WinForm的窗體控件還用非泛型,太落后了吧?。。〈_實(shí)如此,WinForm對泛型控件(Control)的支持上存在很大問題。雖然可以定義泛型控件,也可以使用,可以運(yùn)行。但會有很多麻煩的,比如窗體設(shè)計(jì)器沒法顯示...那只好使用非泛型的了,好在我們有C# Cast<T>!

【編輯推薦】

  1. C#局部類型介紹
  2. C#固定指針簡單介紹
  3. 淺析C# FTP WebRequest對象
  4. C#分部方法的應(yīng)用場景
  5. 簡單介紹VB.NET和C#
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#設(shè)置Coopera

2009-07-31 14:08:54

C# 匿名函數(shù)

2009-08-18 17:29:02

C#使用指針

2009-08-13 15:18:23

C#文件上傳

2009-08-18 09:26:07

C#線程功能

2009-08-20 16:28:45

C#匿名方法

2009-08-25 16:49:44

C#使用if語句

2009-09-03 10:42:16

C# Employee

2009-08-25 10:08:39

C# MyData對象

2009-08-24 18:09:13

C#構(gòu)造函數(shù)

2009-08-17 09:57:00

C# Windows

2009-08-10 13:40:46

創(chuàng)建C# COM對象

2009-08-10 17:12:54

C#編譯器

2009-09-02 09:13:16

C#文法產(chǎn)生式

2009-09-04 14:41:09

C#同步線程

2009-07-31 15:37:45

C#靜態(tài)構(gòu)造函數(shù)

2009-08-06 09:32:03

C#代碼協(xié)同執(zhí)行

2009-08-03 18:26:18

C#定義接口成員

2009-08-06 14:08:08

C#語言異常處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號