自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET 2.0泛型詳解

開(kāi)發(fā) 后端
本文向您介紹ASP.NET 2.0泛型特性。在1.X版本中,為了能適應(yīng)不同類(lèi)型的參數(shù)引入,我們常常需要重寫(xiě)一些函數(shù),或者常常將其object化,以達(dá)到函數(shù)的通用性。ASP.NET 2.0泛型的出現(xiàn)很好的解決了這個(gè)問(wèn)題。 設(shè)計(jì)中,集復(fù)用性、類(lèi)型安全、高效率于一身

C#2.0作為#1.X的升級(jí)版本,為我們引入了很多新的而且很實(shí)用的特性。最重要的當(dāng)屬ASP.NET 2.0泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和局部類(lèi)(partial Types)。這些新特性在提供高度兼容性的同時(shí),也在很大程度上提高了代碼的效率和安全性。

本節(jié)我們學(xué)習(xí)有關(guān)于ASP.NET 2.0泛型的內(nèi)容。泛型存在的必要性:在1.X版本中,為了能適應(yīng)不同類(lèi)型的參數(shù)引入,我們常常需要重寫(xiě)一些函數(shù),或者常常將其object化,以達(dá)到函數(shù)的通用性。但往往帶給我們的是程序性能的下降和重復(fù)性勞動(dòng)的增加。泛型的出現(xiàn)很好的解決了這個(gè)問(wèn)題。其實(shí)簡(jiǎn)單的講,泛型是一種可以傳遞或者靈活規(guī)范參數(shù)類(lèi)型的機(jī)制。
泛型需要命名空間System.Collections.Generic的支持,可應(yīng)用于類(lèi)、方法、結(jié)構(gòu)、接口、委托等設(shè)計(jì)中,集復(fù)用性、類(lèi)型安全、高效率于一身。下面我們分別舉例來(lái)看看泛型的幾種使用方法。

1、ASP.NET 2.0泛型方法

  1. using System;  
  2. using System.Collections.Generic;   
  3.  
  4. public class GenericMethod  
  5. {  
  6. // 靜態(tài) 泛型方法  
  7. public static string Output〈T 〉(T t)  
  8. {  
  9. return "類(lèi)型:" + t.GetType().  
  10. ToString() + ";值:" + t.ToString();  
  11. }  
  12. }   
  13.  
  14. public partial class Generic_Method :   
  15. System.Web.UI.Page  
  16. {  
  17. protected void Page_Load(object   
  18. sender, EventArgs e)  
  19. {  
  20. Response.Write(GenericMethod.Output 
  21. int 〉 (23) + "〈br / 〉 ");  
  22.  
  23. Response.Write(GenericMethod.Output 
  24. 〈DateTime 〉 (DateTime.Now) + "〈br / 〉 ");  
  25. }  
  26. }   

2、ASP.NET 2.0泛型抽象類(lèi)

  1. using System;  
  2. using System.Collections.Generic;  
  3.  
  4. // 泛型抽象類(lèi)  
  5. public abstract class GenericParent  
  6. {  
  7. // 泛型抽象方法,返回值為一個(gè)泛型,  
  8. 加一個(gè)約束使泛型X要繼承自泛型Y  
  9. public abstract X Output〈 X, Y 〉   
  10. (X x, Y y) where X : Y;   
  11.  
  12. // 泛型抽象方法,返回值為一個(gè)string類(lèi)型,  
  13. 加一個(gè)約束使泛型X要繼承自IListSource  
  14. public abstract string Output2〈 X 〉   
  15. (X x) where X : System.ComponentModel.  
  16. IListSource;  
  17. }   
  18.  
  19. public class GenericChild : GenericParent  
  20. {  
  21. // 重寫(xiě)抽象類(lèi)的泛型方法  
  22. public override T Output〈 T, Z 〉 (T t, Z z)  
  23. {  
  24. return t;  
  25. }    
  26.  
  27. // 重寫(xiě)抽象類(lèi)的泛型方法  
  28. public override string Output2〈 T 〉 (T t)  
  29. {  
  30. return t.GetType().ToString();  
  31. }  
  32. }   
  33.  
  34. public partial class Generic_Abstract :  
  35.  System.Web.UI.Page  
  36. {  
  37. protected void Page_Load(object sender,   
  38. EventArgs e)  
  39. {  
  40. GenericChild gc = new GenericChild();  
  41. Response.Write(gc.Output〈 string, IComparable 〉   
  42. ("aaa""xxx"));  
  43. Response.Write("〈 br / 〉 ");   
  44.  
  45. Response.Write(gc.Output2〈 System.Data.DataTable 〉   
  46. (new System.Data.DataTable()));  
  47. Response.Write("〈 br / 〉 ");  
  48. }  
  49. }   

#p#

3、ASP.NET 2.0泛型接口

  1. using System;  
  2. using System.Collections.Generic;   
  3.  
  4. // 泛型接口  
  5. public interface IGenericInterface〈T 〉  
  6. {  
  7. T CreateInstance();  
  8. }   
  9.  
  10. // 實(shí)現(xiàn)上面泛型接口的泛型類(lèi)  
  11. // 派生約束where T : TI(T要繼承自TI)  
  12. // 構(gòu)造函數(shù)約束where T : new()(T可以實(shí)例化)  
  13. public class Factory〈T, TI 〉 :   
  14. IGenericInterface〈TI 〉  
  15. where T : TI, new()  
  16. {  
  17. public TI CreateInstance()  
  18. {  
  19. return new T();  
  20. }  
  21. }   
  22.  
  23. public partial class Generic_Interface :   
  24. System.Web.UI.Page  
  25. {  
  26. protected void Page_Load(object sender,   
  27. EventArgs e)  
  28. {  
  29. IGenericInterface〈System.ComponentModel.  
  30. IListSource 〉factory =  
  31. new Factory〈System.Data.DataTable,   
  32. System.ComponentModel.IListSource 〉();   
  33.  
  34. Response.Write(factory.CreateInstance().  
  35. GetType().ToString());  
  36. Response.Write("〈br / 〉");  
  37. }  
  38. }   

4、ASP.NET 2.0泛型委托

  1. using System;  
  2. using System.Collections.Generic;   
  3.  
  4. public class GenericDelegate  
  5. {  
  6. // 聲明一個(gè)泛型委托  
  7. public delegate string OutputDelegate  
  8. 〈T 〉(T t);   
  9.  
  10. // 定義一個(gè)靜態(tài)方法  
  11. public static string DelegateFun  
  12. (string s)  
  13. {  
  14. return String.Format("Hello, {0}", s);  
  15. }   
  16.  
  17. // 定義一個(gè)靜態(tài)方法  
  18. public static string DelegateFun  
  19. (DateTime dt)  
  20. {  
  21. return String.Format("Time, {0}",   
  22. dt.ToString());  
  23. }  
  24. }   
  25.  
  26.  
  27. public partial class Generic_Delegate :   
  28. System.Web.UI.Page  
  29. {  
  30. protected void Page_Load(object sender,  
  31. EventArgs e)  
  32. {  
  33. // 使用泛型委托  
  34. GenericDelegate.OutputDelegate〈string 〉   
  35. delegate1  
  36. = new GenericDelegate.OutputDelegate  
  37. 〈string 〉(GenericDelegate.DelegateFun);   
  38.  
  39. Response.Write(delegate1("aabbcc"));  
  40. Response.Write("〈br / 〉");   
  41.  
  42. // 使用泛型委托(匿名方法)  
  43. GenericDelegate.OutputDelegate〈DateTime 〉  
  44. delegate2 = GenericDelegate.DelegateFun;  
  45. Response.Write(delegate2(DateTime.Now));  
  46. }  
  47. }   

【編輯推薦】

  1. ASP.NET電子商務(wù)系統(tǒng)設(shè)計(jì)淺析(1)
  2. 基于ASP.NET圖書(shū)電子商務(wù)網(wǎng)站建設(shè)技術(shù)探析
  3. ASP.NET用Post方式向網(wǎng)頁(yè)發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應(yīng)用程序淺析
  5. ASP.NET中的HttpWorkerRequest對(duì)像
  6. 介紹ASP.NET MVC框架
    責(zé)任編輯:冰荷 來(lái)源: it55
    相關(guān)推薦

    2009-07-30 15:17:16

    ASP.NET 2.0

    2009-07-22 17:23:03

    XmlDataSourASP.NET 2.0

    2009-07-29 16:08:07

    ASP和ASP.NET

    2009-07-23 13:19:51

    2009-07-28 16:57:50

    ASP.NET Ses

    2009-07-24 10:14:22

    ASP.NET開(kāi)發(fā)

    2009-08-05 11:14:33

    ASP.NET ISA

    2009-07-22 16:25:41

    ASP.NET AJA

    2009-07-21 14:37:13

    Profile Pro優(yōu)化ASP.NET 2

    2009-07-30 14:55:43

    ASP.NET 2.0

    2009-05-11 13:48:00

    ASP.NET 2.0緩存效率

    2009-07-22 17:21:27

    ASP.NET 2.0

    2009-07-28 14:06:28

    ASP.NET 2.0

    2009-01-07 11:38:22

    ASP.NET.NET錯(cuò)誤記錄

    2009-12-14 17:50:45

    ASP.NET 2.0

    2009-07-28 13:39:44

    加載ViewStateASP.NET

    2009-08-04 10:43:59

    ASP.NET控件開(kāi)發(fā)

    2009-08-19 13:44:00

    ASP.NET Lis

    2009-08-04 18:10:35

    ASP.NET動(dòng)態(tài)編譯

    2009-07-23 13:09:23

    點(diǎn)贊
    收藏

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