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

.Net常見(jiàn)問(wèn)題之C#中的委托

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

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

什么是委托

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

看一下代碼圖

在命名空間里,定義一個(gè)委托,和類是平級(jí)的

 

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

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

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

繼續(xù)。。。。

媒婆類:

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

可以看到,GetTel方法的參數(shù)是一個(gè)委托類型的,和一般的基本類型和常見(jiàn)引用類型引用方式一樣使用。然后再方法體執(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 "得到男屌絲的電話";
    }
  }

最后上測(cè)試類

       

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)建媒婆對(duì)象,媒婆介紹一個(gè)sex="男",

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

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

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

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

相關(guān)文章

  • C#正則過(guò)濾HTML標(biāo)簽并保留指定標(biāo)簽的方法

    C#正則過(guò)濾HTML標(biāo)簽并保留指定標(biāo)簽的方法

    這篇文章主要介紹了C#正則過(guò)濾HTML標(biāo)簽并保留指定標(biāo)簽的方法,涉及C#針對(duì)頁(yè)面HTML元素正則匹配與替換相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#各類集合匯總

    C#各類集合匯總

    這篇文章主要介紹了C#各類集合的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • c# 用ELMAH日志組件處理異常

    c# 用ELMAH日志組件處理異常

    這篇文章主要介紹了c# 用ELMAH日志組件處理異常,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C#獲取所有進(jìn)程的方法

    C#獲取所有進(jìn)程的方法

    在本篇文章里小編給大家分享了關(guān)于C#獲取所有進(jìn)程的方法和步驟,有需要的朋友們跟著學(xué)習(xí)參考下。
    2018-12-12
  • C#之CLR內(nèi)存原理初探

    C#之CLR內(nèi)存原理初探

    這篇文章主要介紹了C#之CLR內(nèi)存原理初探,有助于讀者進(jìn)一步理解C#的運(yùn)行原理,需要的朋友可以參考下
    2014-08-08
  • C#中實(shí)體類與XML相互轉(zhuǎn)換方式

    C#中實(shí)體類與XML相互轉(zhuǎn)換方式

    這篇文章主要介紹了C#中實(shí)體類與XML相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • WinForm ToolTip使用方法小結(jié)

    WinForm ToolTip使用方法小結(jié)

    這篇文章主要介紹了WinForm ToolTip使用方法小結(jié),對(duì)C#初學(xué)者有一定的借鑒參考價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)事件訂閱和解除訂閱的詳細(xì)步驟

    C#實(shí)現(xiàn)事件訂閱和解除訂閱的詳細(xì)步驟

    在C#中,事件的訂閱和解除訂閱是通過(guò)使用+=和-=操作符來(lái)實(shí)現(xiàn)的,這些操作符分別用于將事件處理程序添加到事件和從事件中移除事件處理程序,本文給大家介紹了C#實(shí)現(xiàn)事件訂閱和解除訂閱的詳細(xì)步驟,需要的朋友可以參考下
    2024-12-12
  • C#沉淀之委托的深入講解

    C#沉淀之委托的深入講解

    如果要給方法傳遞一個(gè)方法參數(shù)時(shí),就可以使用委托。下面這篇文章主要給大家介紹了關(guān)于C#沉淀之委托的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • C#使用CEFSharp獲取動(dòng)態(tài)網(wǎng)頁(yè)源碼的演示步驟

    C#使用CEFSharp獲取動(dòng)態(tài)網(wǎng)頁(yè)源碼的演示步驟

    CEFSharp是一個(gè)用C#編寫(xiě)的庫(kù),它是Chromium Embedded Framework (CEF) 的.NET封裝和擴(kuò)展,CEF允許開(kāi)發(fā)者在自己的應(yīng)用程序中嵌入一個(gè)功能強(qiáng)大的HTML渲染引擎,從而能夠呈現(xiàn)網(wǎng)頁(yè)內(nèi)容,本文介紹了C#如何使用CEFSharp獲取動(dòng)態(tài)網(wǎng)頁(yè)源碼,需要的朋友可以參考下
    2024-08-08

最新評(píng)論

什邡市| 滁州市| 澄城县| 甘谷县| 宜兴市| 安顺市| 榆中县| 武隆县| 青神县| 若羌县| 建昌县| 崇州市| 张掖市| 万宁市| 乌鲁木齐县| 古田县| 孟州市| 石嘴山市| 天门市| 庆云县| 鹤壁市| 崇信县| 汉川市| 祁阳县| 石屏县| 织金县| 桦南县| 阿坝县| 启东市| 阳泉市| 江西省| 项城市| 仁布县| 鹰潭市| 巴中市| 周口市| 吉木萨尔县| 浦北县| 柞水县| 安义县| 江达县|