成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述C# Cast<T>

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

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

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

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

ListView的Items類(lèi)型是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>,我們的代碼很精簡(jiǎn)。Cast<T>甚至還可以用在所有控件的基類(lèi)Control上,它的Controls屬性也是非泛型的!

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

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

【編輯推薦】

  1. C#局部類(lèi)型介紹
  2. C#固定指針簡(jiǎn)單介紹
  3. 淺析C# FTP WebRequest對(duì)象
  4. C#分部方法的應(yīng)用場(chǎng)景
  5. 簡(jiǎn)單介紹VB.NET和C#
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(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語(yǔ)句

2009-09-03 10:42:16

C# Employee

2009-08-25 10:08:39

C# MyData對(duì)象

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對(duì)象

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#語(yǔ)言異常處理
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 在线a视频 | 成年人在线播放 | 免费爱爱视频 | 成人免费xxxxx在线视频 | 欧美一级欧美一级在线播放 | 激情欧美一区二区三区中文字幕 | 亚洲精品在线视频 | 国产一级一级国产 | 正在播放国产精品 | 欧美一级在线观看 | 91视频网 | 日本电影韩国电影免费观看 | 天堂中文av | 国产精品久久久久久久久久免费看 | 国产精品久久久久无码av | 精品国产免费一区二区三区演员表 | 亚洲精品成人免费 | 久久毛片 | 亚洲欧美aⅴ | 中文日韩字幕 | 欧美激情在线播放 | 久久久久久久久久久久久九 | 亚洲国产精品一区二区三区 | av黄色在线 | 国产乱码久久久久久一区二区 | 精品一区久久 | 玖玖操| 日韩欧美一区二区三区 | 中文字幕av色| 欧美性大战久久久久久久蜜臀 | 国产精品一区二区日韩 | 日韩高清中文字幕 | а天堂中文最新一区二区三区 | 老头搡老女人毛片视频在线看 | 亚洲国产精品视频 | 偷拍自拍网址 | 精精国产xxxx视频在线播放 | h视频免费在线观看 | 在线看av网址| 一区二区三区四区在线免费观看 | 99国产精品99久久久久久粉嫩 |