欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net常見問題之C#中的委托

 更新時間:2015年07月27日 09:53:52   作者:風(fēng)夜北  
這篇文章主要介紹了.Net常見問題委托概念的介紹,委托類似于C++中的函數(shù)指針,但是又有所不同,下面就針對委托這個概念給大家詳細(xì)介紹下,需要的朋友可以參考下

有朋友說委托和C++中的函數(shù)指針很像,但是兩者真的有差別。在C++中,函數(shù)指針不是類型安全的,它所指向的是內(nèi)存中的某一個位置,但是我們沒有辦法判斷這個指針實際指向的是什么,對于參數(shù)和返回類型更難以判斷了。但是.NET中的委托則完全不同,它是類型比較安全的類,我們很明白的知道委托定義的返回類型和參數(shù)類型。它不僅包含了方法的引用,而且包含了方法的引用。下面通過一段代碼給大家分享下對委托的理解:

什么是委托

  在實際的開發(fā)過程中,有時某個方法執(zhí)行的操作并不是針對數(shù)據(jù)進行的,而是針對另一個方法,但是這個方法在編譯時又無法得知,只能在運行時才知道。如果是針對數(shù)據(jù)做操作,只需將數(shù)據(jù)作為方法的參數(shù)傳入即可,那么針對方法做操作,很明顯將方法作為參數(shù)傳入即可,聽起來的確很奇怪,但是需要先接受這個現(xiàn)實,然后從使用中去體會它的含義。下面舉一個例子(請原諒我的英語 ,my english is poor?。?,這樣一個場景:媒婆給菇?jīng)龌蛘咝』锝榻B對象,如果是對象是男的,菇?jīng)鼍驼f出她的聯(lián)系方式,如果是女的,小伙就說出他的聯(lián)系方式(PS:我們這里都是正常的性取向)。

看一下代碼圖

在命名空間里,定義一個委托,和類是平級的

 

復(fù)制代碼 代碼如下:

 public delegate string GetTelphone();
  //用來得到聯(lián)系方式的。

概述中提到,委托可以定義返回類型和參數(shù)類型,那么這個委托的返回類型就是string,無參的。

繼續(xù)。。。。

媒婆類:

/// <summary>
/// 媒婆
/// </summary>
class MeiPo
{
  public string Sex { get; set; }
  public void GetTel(GetTelphone getTelphone)
  {
    Console.WriteLine(getTelphone.Invoke());
  }
}

可以看到,GetTel方法的參數(shù)是一個委托類型的,和一般的基本類型和常見引用類型引用方式一樣使用。然后再方法體執(zhí)行委托方法,輸出結(jié)果。

菇?jīng)鲱悾?/strong>

/// <summary>
/// 菇?jīng)?
/// </summary>
class Girl
{
  public string GetGirlTel()
  {
    return "得到菇?jīng)龅碾娫?;
  }
}

小伙類:

  

 /// <summary>
  /// 男屌絲
  /// </summary>
  class DiaoSi
  {
    public string GetBoyTel()
    {
      return "得到男屌絲的電話";
    }
  }

最后上測試類

       

static void Main(string[] args)
    {
      var redMun = new MeiPo {Sex = "男"};
      var del= new GetTelphone(new Girl().GetGirlTel);
      if(redMun.Sex=="女")
        del = new GetTelphone(new DiaoSi().GetBoyTel);
      redMun.GetTel(del);

      Console.ReadKey();
    }

執(zhí)行步驟:

1、創(chuàng)建媒婆對象,媒婆介紹一個sex="男",

2、創(chuàng)建委托對象,委托是一個類,所以用new來實例化。委托即指方法的引用,所在初始化時傳入指向的方法引用new Girl().GetGrilTel

3、如果媒婆介紹的是sex="女",那么委托指向另一個方法

4、媒婆對象調(diào)用GetTel得到聯(lián)系方式

以上內(nèi)容就是對委托介紹的全部內(nèi)容,希望大家喜歡。

相關(guān)文章

最新評論