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

概述C# Cast<T>

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

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

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

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

ListView的Items類型是ListView.ListViewItemCollection,這個ListViewItemCollection實現了IEnumerable。ListView.Items正是一個非泛型的集合,因此可以應用Cast<T>。以下代碼假定 listBox 數據綁定在一個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>(); 

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

  1. //計算平均年齡  
  2. int age = dataGridView.SelectedRows.
    Cast
    <Employee>().Average(p=>p.Age);  
  3. //統計所在城市  
  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 準備,Control 類和Control 的派生類多處使用了非泛型。可現在都用vs2008(甚至vs2010)了,那為什么WinForm的窗體控件還用非泛型,太落后了吧!!!確實如此,WinForm對泛型控件(Control)的支持上存在很大問題。雖然可以定義泛型控件,也可以使用,可以運行。但會有很多麻煩的,比如窗體設計器沒法顯示...那只好使用非泛型的了,好在我們有C# Cast<T>!

【編輯推薦】

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

2009-08-17 09:57:00

C# Windows

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#構造函數

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#設置Coopera

2009-07-31 14:08:54

C# 匿名函數

2009-08-18 17:29:02

C#使用指針

2009-08-13 15:18:23

C#文件上傳

2009-08-18 09:26:07

C#線程功能

2009-08-14 16:54:19

C# Hello Wo

2009-08-19 15:30:40

C#復合控件構建

2009-09-02 16:02:52

C#引用托管對象

2009-08-12 11:33:23

C#實現文件下載

2009-08-21 17:11:41

C#調用Active組

2009-08-17 10:54:53

C#執行ping命令

2009-08-03 16:39:56

C# Assembly

2009-08-07 16:43:44

C#調用Windows
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩三级免费网站 | 色偷偷人人澡人人爽人人模 | 就操在线| 九九伊人sl水蜜桃色推荐 | 亚洲a一区 | 一级黄色影片在线观看 | 日韩一区在线播放 | 伊人久久免费 | 日韩欧美国产一区二区三区 | av网站在线免费观看 | 色网在线看 | 亚洲激情自拍偷拍 | 成人福利网站 | 一级少妇女片 | 在线观看国产视频 | 91视频网 | 精品久久久久一区二区国产 | 国产精品69av | 精品av久久久久电影 | 国产亚洲一区二区精品 | 国产精品精品 | 日韩免费在线 | 久久久久成人精品 | 青草青草久热精品视频在线观看 | 情侣av | 国产在线观看一区二区三区 | 精品久久久久久国产 | 精品视频免费 | 亚洲视频中文字幕 | 瑟瑟激情 | 精品一二三区在线观看 | 欧美综合一区二区 | 国产伊人久久久 | 羞羞午夜 | 一区二区三区av夏目彩春 | 亚洲一区网站 | 作爱视频免费看 | 久久国产精品免费 | av黄色网| 精品亚洲一区二区三区 | 国产精品99免费视频 |