最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中的委托使用

 更新時(shí)間:2016年07月03日 15:23:55   投稿:hebedich  
委托是C#中新加入的一個(gè)類(lèi)型,可以把它想作一個(gè)和Class類(lèi)似的一種類(lèi)型,和使用類(lèi)相似,使用一個(gè)委托時(shí),需要兩個(gè)步驟,首先你要定義一個(gè)委托,就像是定義一個(gè)類(lèi)一樣;然后,你可以創(chuàng)建一個(gè)或多個(gè)該委托的實(shí)例。

從今天開(kāi)始寫(xiě)關(guān)于C#的系列文章,本篇文章主要講解C#中的委托使用。

委托其實(shí)就是一種數(shù)據(jù)類(lèi)型,和int,string是一樣的概念。

如果要把一個(gè)字符串賦值給一個(gè)變量,用string聲明一個(gè)變量即可。如果要把一個(gè)方法賦值給一個(gè)變量,那么用什么關(guān)鍵字呢?當(dāng)然就是用委托了,所以用委托聲明的變量就可以接受一個(gè)方法了,之后那個(gè)變量就可以像方法一樣執(zhí)行。

下面開(kāi)始詳細(xì)介紹:

先看一段代碼:

 static void Main(string[] args)
 {
   int i;      //可以接受一個(gè)整數(shù)的變量
   string str;    //可以接受一個(gè)字符串的變量
 }

在Main方法內(nèi)聲明了2個(gè)變量:i和str。大家都很熟悉的代碼,變量i表明它可以接受一個(gè)整數(shù),變量str表明它可以接受一個(gè)字符串。

那么如果我想聲明一個(gè)變量既可以接受整數(shù)又可以接受字符串,那該用什么數(shù)據(jù)類(lèi)型來(lái)聲明這樣的變量呢?

答案很簡(jiǎn)單:用class。

public class MyClass
{
  public int i { get; set; }    //接受整數(shù)
  public string str { get; set; } //接受字符串
}

那么我們就創(chuàng)建了一種數(shù)據(jù)類(lèi)型:MyClass,用它聲明的變量可以同時(shí)接受一個(gè)整數(shù)和一個(gè)字符串。

如下:

static void Main(string[] args)
{
  MyClass obj = new MyClass();
  obj.i =1;
  obj.str ="我是字符串";
}

 現(xiàn)在問(wèn)題來(lái)了:我想要一種數(shù)據(jù)類(lèi)型可以聲明一個(gè)變量用于接受一個(gè)方法。

既然這種數(shù)據(jù)類(lèi)型要接受一個(gè)方法,那我們先看看方法長(zhǎng)什么樣:

 public string Method(int m,int n)
 {
   return "";
 }

上面的Method方法最主要的特點(diǎn)就是這個(gè)方法的輸入?yún)?shù)數(shù)據(jù)類(lèi)型與輸出的數(shù)據(jù)類(lèi)型。

 通常我們會(huì)調(diào)用各種方法,調(diào)用方法前我們會(huì)確定方法的輸入?yún)?shù)的數(shù)據(jù)類(lèi)型和方法輸出的數(shù)據(jù)類(lèi)型,至于方法的主體我們通常不關(guān)心,方法的主體由方法編程人員去完成即可。

所以我們編寫(xiě)一個(gè)方法,調(diào)用一個(gè)方法前都要明確的方法的輸入輸出數(shù)據(jù)類(lèi)型。

對(duì)于上面Method方法的輸入數(shù)據(jù)類(lèi)型為2個(gè)整數(shù),輸出的是一個(gè)字符串。

現(xiàn)在我們要聲明一個(gè)變量來(lái)接受這個(gè)方法,那么這個(gè)變量的數(shù)據(jù)類(lèi)型也應(yīng)該要明確輸入,輸出的數(shù)據(jù)類(lèi)型。那么我們應(yīng)該定義符合那個(gè)方法輸入與輸出一致的數(shù)據(jù)類(lèi)型。

public class Test
{
  //這種數(shù)據(jù)類(lèi)型可以接受一個(gè)方法
  public delegate string MethodDelegate(int i1,int i2);
}

好了,我已經(jīng)聲明了和上面Method方法一樣的輸入與輸出類(lèi)型的一個(gè)數(shù)據(jù)類(lèi)型了:MethodDelegate。

那么我們就可以用這個(gè)數(shù)據(jù)類(lèi)型來(lái)接受Mehtod方法了,完整代碼如下:

class Program
{
  //這種數(shù)據(jù)類(lèi)型可以接受一個(gè)方法
  public delegate string MethodDelegate(int i1, int i2);

  /// <summary>
  /// 我們可以用MethodDelegate聲明一個(gè)變量來(lái)接受方法了
  /// </summary>
  public void Test()
  {
    MethodDelegate IamMethod = Method;  //把下面那個(gè)Method方法賦值給變量了。
    var result=IamMethod(1, 2);     //然后把這個(gè)變量當(dāng)作方法一樣執(zhí)行即可。
  }
  
  public string Method(int m, int n)
  {
    return "";
  }  
}

在上面第4行:我們用delegate關(guān)鍵字聲明了一種數(shù)據(jù)類(lèi)型:這種數(shù)據(jù)類(lèi)型和我們想要接受什么樣方法的輸入輸出類(lèi)型保持一致就可以了。

那么上面的MethodDelegate就可以接受帶2個(gè)int類(lèi)型的輸入?yún)?shù)并且返回類(lèi)型是string的任何方法了。

現(xiàn)在我們發(fā)現(xiàn)委托和int,string是一樣的概念,只不過(guò),int用來(lái)接受整數(shù),string用來(lái)接受字符串,delegate用來(lái)聲明一種數(shù)據(jù)類(lèi)型接受方法。

相關(guān)文章

  • 詳解C#代碼生成器實(shí)現(xiàn)原理

    詳解C#代碼生成器實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)介紹了C#代碼生成器實(shí)現(xiàn)原理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • WPF運(yùn)行時(shí)替換方法實(shí)現(xiàn)mvvm自動(dòng)觸發(fā)刷新

    WPF運(yùn)行時(shí)替換方法實(shí)現(xiàn)mvvm自動(dòng)觸發(fā)刷新

    這篇文章主要為大家詳細(xì)介紹了WPF運(yùn)行時(shí)如何實(shí)現(xiàn)setter不需要調(diào)方法就可以自動(dòng)觸發(fā)界面刷新,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • 基于C#實(shí)現(xiàn)高效示波器功能

    基于C#實(shí)現(xiàn)高效示波器功能

    這篇文章介紹了用?C#實(shí)現(xiàn)示波器功能的方法,包括使用?WinForm?及多種曲線控件,闡述了原理和思路,如定義緩存數(shù)據(jù)的隊(duì)列、轉(zhuǎn)化數(shù)組刷新顯示等,還提到注意事項(xiàng)及擴(kuò)展特性,最后呼吁點(diǎn)贊支持和交流,需要的朋友可以參考下
    2024-12-12
  • 最新評(píng)論

    大渡口区| 越西县| 德州市| 肥西县| 黄浦区| 嘉峪关市| 广东省| 绥滨县| 澎湖县| 大同市| 邵武市| 桦川县| 海伦市| 滨海县| 宿州市| 呼伦贝尔市| 石渠县| 石阡县| 商城县| 新昌县| 富宁县| 平阴县| 永康市| 承德县| 太谷县| 安新县| 黑河市| 额济纳旗| 恩施市| 永德县| 盐山县| 绥江县| 曲阳县| 东丽区| 哈尔滨市| 崇明县| 彰化县| 房产| 兰西县| 永顺县| 衡水市|