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

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

新聞中心

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

C# 泛型編程基礎(chǔ)學(xué)習(xí):最顯著的一點(diǎn)就是它參數(shù)化了類(lèi)型,把類(lèi)型作為參數(shù)抽象出來(lái),從而使我們?cè)趯?shí)際的運(yùn)用當(dāng)中能夠更好的實(shí)現(xiàn)代碼的重復(fù)利用,同時(shí)它提供了更強(qiáng)的類(lèi)型安全,更高的效率,不過(guò)在約束方面,它只支持顯示的約束,這樣在靈活性方面就顯得不是那么好了。我覺(jué)得它之所以能夠提供更高的效率是因?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ù)。

下面來(lái)看如何定義一個(gè)C# 泛型類(lèi),很簡(jiǎn)單,你只需要意識(shí)到一點(diǎn),在這里,類(lèi)型已經(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來(lái)實(shí)例化Test類(lèi) 
  10.    Test t = new Test("SHY520",22); 
  11.    //調(diào)用泛型類(lèi)中的方法 
  12.    t.SetValue(); 
  13.   } 
  14.  } 
  15.  /**//// 
  16.  /// 定義一個(gè)泛型類(lèi),該類(lèi)有兩個(gè)類(lèi)型參數(shù),分別是T,S 
  17.  /// 
  18.  /// 類(lèi)型參數(shù) 
  19. /// 類(lèi)型參數(shù) 
  20.  public class Test 
  21.  { 
  22.   //泛型類(lèi)的類(lèi)型參數(shù)可用于類(lèi)成員 
  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è)泛型類(lèi),那么如何實(shí)現(xiàn)泛型類(lèi)的繼承呢?這里需要滿足下面兩點(diǎn)中的任何一點(diǎn)即可:

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

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

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

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

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

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

 
 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace GenericTest 
  5.  //定義一個(gè)委托,類(lèi)型參數(shù)為T(mén),返回值類(lèi)型T 
  6.  //泛型委托支持在返回值和參數(shù)上應(yīng)用類(lèi)型參數(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è)賮?lái)看C# 泛型方法,C#的泛型機(jī)制只支持在方法申明上包含類(lèi)型參數(shù),也即是泛型方法。特別注意的是,泛型不支持在除了方法以外的其他類(lèi)/接口成員上使用類(lèi)型參數(shù),但這些成員可以被包含在泛型類(lèi)型中,并且可以使用泛型類(lèi)型的類(lèi)型參數(shù)。還有一點(diǎn)需要說(shuō)的就是,泛型方法可以在泛型類(lèi)型中,也可以存在于非泛型類(lèi)型中。下面我們分別看一下泛型類(lèi)型的申明,調(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ì)泛型方法的類(lèi)型參數(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ǔ)有所幫助。


網(wǎng)頁(yè)題目:C#泛型編程基礎(chǔ)實(shí)例詳解
本文地址:http://m.5511xx.com/article/cccgcdp.html