日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#泛型編程基礎(chǔ)實(shí)例詳解

C# 泛型編程基礎(chǔ)學(xué)習(xí):最顯著的一點(diǎn)就是它參數(shù)化了類型,把類型作為參數(shù)抽象出來,從而使我們?cè)趯?shí)際的運(yùn)用當(dāng)中能夠更好的實(shí)現(xiàn)代碼的重復(fù)利用,同時(shí)它提供了更強(qiáng)的類型安全,更高的效率,不過在約束方面,它只支持顯示的約束,這樣在靈活性方面就顯得不是那么好了。我覺得它之所以能夠提供更高的效率是因?yàn)榉盒驮趯?shí)例化的時(shí)候采用了 "on-demand"的模式,即按需實(shí)例化,發(fā)生在JIT(Just In Time)編譯時(shí)。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

下面來看如何定義一個(gè)C# 泛型類,很簡(jiǎn)單,你只需要意識(shí)到一點(diǎn),在這里,類型已經(jīng)被參數(shù)化了:

C# 泛型編程實(shí)例:

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  class Program 
  6.  { 
  7.   static void Main(string[] args) 
  8.   { 
  9.    //使用string,int來實(shí)例化Test類 
  10.    Test t = new Test("SHY520",22); 
  11.    //調(diào)用泛型類中的方法 
  12.    t.SetValue(); 
  13.   } 
  14.  } 
  15.  /**//// 
  16.  /// 定義一個(gè)泛型類,該類有兩個(gè)類型參數(shù),分別是T,S 
  17.  /// 
  18.  /// 類型參數(shù) 
  19. /// 類型參數(shù) 
  20.  public class Test 
  21.  { 
  22.   //泛型類的類型參數(shù)可用于類成員 
  23.   private T name; 
  24.   private S age; 
  25.   public Test(T Name,S Age) 
  26.   { 
  27.    this.name = Name; 
  28.    this.age = Age; 
  29.   } 
  30.   public void SetValue() 
  31.   { 
  32.    Console.WriteLine(name.ToString()); 
  33.    Console.WriteLine(age.ToString()); 
  34.   } 
  35.  } 

上面的C# 泛型編程例子不是很恰當(dāng),目的是讓初學(xué)C# 泛型的你了解一下泛型的定義及實(shí)例化方法,如上,我們定義了一個(gè)泛型類,那么如何實(shí)現(xiàn)泛型類的繼承呢?這里需要滿足下面兩點(diǎn)中的任何一點(diǎn)即可:

1、C# 泛型類繼承中,父類的類型參數(shù)已被實(shí)例化,這種情況下子類不一定必須是C# 泛型類;

2、父類的類型參數(shù)沒有被實(shí)例化,但來源于子類,也就是說父類和子類都是泛型類,并且二者有相同的類型參數(shù);

 
 
 
  1. //如果這樣寫的話,顯然會(huì)報(bào)找不到類型T,S的錯(cuò)誤 
  2. public class TestChild : Test { } 
  3. //正確的寫法應(yīng)該是 
  4. public class TestChild : Test{ } 
  5. public class TestChild : Test { } 
  6. public class TestChild : Test { } 

接著我們來看看泛型接口,其創(chuàng)建以及繼承規(guī)則和上面說的泛型類是一樣的,看下面的代碼:

 
 
 
  1. public interface IList 
  2.  T[] GetElements(); 
  3. public interface IDictionary 
  4.  void Add(K key, V value); 
  5. // 泛型接口的類型參數(shù)要么已實(shí)例化 
  6. // 要么來源于實(shí)現(xiàn)類聲明的類型參數(shù) 
  7. class List : IList, IDictionary 
  8.  public T[] GetElements() { return null; } 
  9.  public void Add(int index, T value) 
  10.  {} 

在來看一下C# 泛型委托,首先我們定義一個(gè)類型參數(shù)為T的委托,然后在類中利用委托調(diào)用方法:

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  //定義一個(gè)委托,類型參數(shù)為T,返回值類型T 
  6.  //泛型委托支持在返回值和參數(shù)上應(yīng)用類型參數(shù) 
  7. delegate string GenericDelete(T value); 
  8.  class test 
  9.  { 
  10.   static string F(int i) { return "SHY520"; } 
  11.   static string G(string s) { return "SHY520"; } 
  12.   static void Main(string[] args) 
  13.   { 
  14.    GenericDelete G1 = G; 
  15.    GenericDelete G2 = new GenericDelete(F); 
  16.   } 
  17.  } 
  18. }

我們?cè)賮砜碈# 泛型方法,C#的泛型機(jī)制只支持在方法申明上包含類型參數(shù),也即是泛型方法。特別注意的是,泛型不支持在除了方法以外的其他類/接口成員上使用類型參數(shù),但這些成員可以被包含在泛型類型中,并且可以使用泛型類型的類型參數(shù)。還有一點(diǎn)需要說的就是,泛型方法可以在泛型類型中,也可以存在于非泛型類型中。下面我們分別看一下泛型類型的申明,調(diào)用,重載和覆蓋。

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  class GenericClass 
  6.  { 
  7.   //申明一個(gè)泛型方法 
  8.   public T getvalue(T t) 
  9.   { 
  10.    return t; 
  11.   } 
  12.   //調(diào)用泛型方法 
  13.   //注意:在調(diào)用泛型方法時(shí),對(duì)泛型方法的類型參數(shù)實(shí)例化 
  14.   public int useMethod() 
  15.   { 
  16.    return this.getvalue(10); 
  17.   } 
  18.   //重載getvalue方法 
  19.   public int getvalue(int i) 
  20.   { 
  21.    return i; 
  22.   } 
  23.  } 
  24.  //下面演示覆蓋 
  25.  //要注意的是,泛型方法被覆蓋時(shí),約束被默認(rèn)繼承,不需要重新指定約束關(guān)系 
  26.  abstract class Parent 
  27.  { 
  28.   public abstract K TEST(K k, V v) where K : V; 
  29.  } 
  30.  class Child : Parent 
  31.  { 
  32.   public override T TEST(T t, S s) 
  33.   { 
  34.    return t; 
  35.   } 
  36.  } 

C# 泛型編程基礎(chǔ)實(shí)例的基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# 泛型編程基礎(chǔ)有所幫助。


分享題目:C#泛型編程基礎(chǔ)實(shí)例詳解
分享URL:http://www.dlmjj.cn/article/cccgcdp.html