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

ASP.NET 2.0泛型詳解

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

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

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

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 "類型:" + 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泛型抽象類

  1. using System;  
  2. using System.Collections.Generic;  
  3.  
  4. // 泛型抽象類  
  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類型,  
  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. // 重寫抽象類的泛型方法  
  22. public override T Output〈 T, Z 〉 (T t, Z z)  
  23. {  
  24. return t;  
  25. }    
  26.  
  27. // 重寫抽象類的泛型方法  
  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)上面泛型接口的泛型類  
  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圖書電子商務(wù)網(wǎng)站建設(shè)技術(shù)探析
  3. ASP.NET用Post方式向網(wǎng)頁發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應(yīng)用程序淺析
  5. ASP.NET中的HttpWorkerRequest對(duì)像
  6. 介紹ASP.NET MVC框架
    責(zé)任編輯:冰荷 來源: it55
    相關(guān)推薦

    2009-07-22 17:23:03

    XmlDataSourASP.NET 2.0

    2009-07-30 15:17:16

    ASP.NET 2.0

    2009-07-29 16:08:07

    ASP和ASP.NET

    2009-07-22 16:25:41

    ASP.NET AJA

    2009-07-28 16:57:50

    ASP.NET Ses

    2009-08-05 11:14:33

    ASP.NET ISA

    2009-07-24 10:14:22

    ASP.NET開發(fā)

    2009-07-23 13:19:51

    2009-12-14 17:50:45

    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-07-22 17:21:27

    ASP.NET 2.0

    2009-07-30 14:55:43

    ASP.NET 2.0

    2009-05-11 13:48:00

    ASP.NET 2.0緩存效率

    2009-07-21 14:37:13

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

    2009-07-23 13:09:23

    2009-08-19 13:44:00

    ASP.NET Lis

    2009-08-04 10:43:59

    ASP.NET控件開發(fā)

    2009-07-28 13:39:44

    加載ViewStateASP.NET

    2009-08-04 18:10:35

    ASP.NET動(dòng)態(tài)編譯
    點(diǎn)贊
    收藏

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