国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中的委托使用

2019-10-29 21:25:04
字體:
來源:轉載
供稿:網友

從今天開始寫關于C#的系列文章,本篇文章主要講解C#中的委托使用。

委托其實就是一種數據類型,和int,string是一樣的概念。

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

下面開始詳細介紹:

先看一段代碼:

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

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

那么如果我想聲明一個變量既可以接受整數又可以接受字符串,那該用什么數據類型來聲明這樣的變量呢?

答案很簡單:用class。

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

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

如下:

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

 現在問題來了:我想要一種數據類型可以聲明一個變量用于接受一個方法。

既然這種數據類型要接受一個方法,那我們先看看方法長什么樣:

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

上面的Method方法最主要的特點就是這個方法的輸入參數數據類型與輸出的數據類型。

 通常我們會調用各種方法,調用方法前我們會確定方法的輸入參數的數據類型和方法輸出的數據類型,至于方法的主體我們通常不關心,方法的主體由方法編程人員去完成即可。

所以我們編寫一個方法,調用一個方法前都要明確的方法的輸入輸出數據類型。

對于上面Method方法的輸入數據類型為2個整數,輸出的是一個字符串。

現在我們要聲明一個變量來接受這個方法,那么這個變量的數據類型也應該要明確輸入,輸出的數據類型。那么我們應該定義符合那個方法輸入與輸出一致的數據類型。

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

好了,我已經聲明了和上面Method方法一樣的輸入與輸出類型的一個數據類型了:MethodDelegate。

那么我們就可以用這個數據類型來接受Mehtod方法了,完整代碼如下:

class Program{  //這種數據類型可以接受一個方法  public delegate string MethodDelegate(int i1, int i2);  /// <summary>  /// 我們可以用MethodDelegate聲明一個變量來接受方法了  /// </summary>  public void Test()  {    MethodDelegate IamMethod = Method;  //把下面那個Method方法賦值給變量了。    var result=IamMethod(1, 2);     //然后把這個變量當作方法一樣執(zhí)行即可。  }    public string Method(int m, int n)  {    return "";  }  }

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

那么上面的MethodDelegate就可以接受帶2個int類型的輸入參數并且返回類型是string的任何方法了。

現在我們發(fā)現委托和int,string是一樣的概念,只不過,int用來接受整數,string用來接受字符串,delegate用來聲明一種數據類型接受方法。


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 包头市| 崇信县| 泰兴市| 澄城县| 广昌县| 永定县| 青龙| 开阳县| 太仆寺旗| 华池县| 宜兴市| 兴和县| 仙居县| 启东市| 当涂县| 台中县| 汾阳市| 汉阴县| 昌宁县| 凤阳县| 越西县| 司法| 云梦县| 甘南县| 呼图壁县| 威远县| 盐池县| 蛟河市| 三台县| 离岛区| 大方县| 昭通市| 惠东县| 龙州县| 额济纳旗| 洪雅县| 秦安县| 昌邑市| 波密县| 山东| 遂平县|