日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

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

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

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

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

C# 泛型編程實例:

 
 
 
  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來實例化Test類 
  10.    Test t = new Test("SHY520",22); 
  11.    //調用泛型類中的方法 
  12.    t.SetValue(); 
  13.   } 
  14.  } 
  15.  /**//// 
  16.  /// 定義一個泛型類,該類有兩個類型參數(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# 泛型編程例子不是很恰當,目的是讓初學C# 泛型的你了解一下泛型的定義及實例化方法,如上,我們定義了一個泛型類,那么如何實現(xiàn)泛型類的繼承呢?這里需要滿足下面兩點中的任何一點即可:

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

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

 
 
 
  1. //如果這樣寫的話,顯然會報找不到類型T,S的錯誤 
  2. public class TestChild : Test { } 
  3. //正確的寫法應該是 
  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ù)要么已實例化 
  6. // 要么來源于實現(xiàn)類聲明的類型參數(shù) 
  7. class List : IList, IDictionary 
  8.  public T[] GetElements() { return null; } 
  9.  public void Add(int index, T value) 
  10.  {} 

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

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  //定義一個委托,類型參數(shù)為T,返回值類型T 
  6.  //泛型委托支持在返回值和參數(shù)上應用類型參數(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#的泛型機制只支持在方法申明上包含類型參數(shù),也即是泛型方法。特別注意的是,泛型不支持在除了方法以外的其他類/接口成員上使用類型參數(shù),但這些成員可以被包含在泛型類型中,并且可以使用泛型類型的類型參數(shù)。還有一點需要說的就是,泛型方法可以在泛型類型中,也可以存在于非泛型類型中。下面我們分別看一下泛型類型的申明,調用,重載和覆蓋。

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  class GenericClass 
  6.  { 
  7.   //申明一個泛型方法 
  8.   public T getvalue(T t) 
  9.   { 
  10.    return t; 
  11.   } 
  12.   //調用泛型方法 
  13.   //注意:在調用泛型方法時,對泛型方法的類型參數(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.  //要注意的是,泛型方法被覆蓋時,約束被默認繼承,不需要重新指定約束關系 
  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# 泛型編程基礎實例的基本內容就向你介紹到這里,希望對你了解和學習C# 泛型編程基礎有所幫助。


網(wǎng)頁題目:C#泛型編程基礎實例詳解
文章源于:http://www.5511xx.com/article/cccgcdp.html