400-650-7353
您所在的位置:首頁 > IT干貨資料 > unity > 【Unity基礎知識】委托和事件

【Unity基礎知識】委托和事件

  • 來源:Unity干貨資料
  • 2021-03-18 19:40:06
  • 閱讀()
  • 分享
  • 手機端入口

看了之前的文章,大家都知道Unity使用腳本最主流的語言就是C#語言。作為程序員小哥哥,平時經常會聽到C#語言中的委托和事件吧。我們今天重點來學習一下委托。

委托和事件各種項目的應用非常廣泛,然而,較好地理解委托和事件對很多接觸C#時間不長的人來說并不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委托和事件就覺得心里憋得慌,渾身不自在。本文中,將通過兩個案例由淺入深地講述什么是委托、為什么要使用委托以及事件的由來。

委托的關鍵字是delegate。也就是和int、string一樣,用delegate關鍵字來聲明一個委托類型。而委托的聲明方式和類卻完全不同,這是怎么一回事?實際上,委托在編譯的時候確實會編譯成類。因為所定義的委托類型在C#中屬于引用類型,也是一個類,所以在任何可以聲明類的地方都可以聲明委托類型。更多的內容將在下面講述,現在,請看看這個案例的完整代碼:

using System;

using System.Collections.Generic;

using System.Text;

namespace Delegate {

//定義委托,它定義了可以代表的方法的類型

public delegate void GreetingDelegate(string name);

class Program {

private static void EnglishGreeting(string name) {

Console.WriteLine("Morning, " + name);

}

private static void ChineseGreeting(string name) {

Console.WriteLine("早上好, " + name);

}

//注意此方法,它接受一個GreetingDelegate類型的方法作為參數

private static void GreetPeople(string name, GreetingDelegate MakeGreeting) {

MakeGreeting(name);

}

static void Main(string[] args) {

GreetPeople("Jimmy Zhang", EnglishGreeting);

GreetPeople("張子陽", ChineseGreeting);

Console.ReadKey();

}

}

}

輸出如下:

Morning, Jimmy Zhang

早上好, 張子陽

下面我們介紹委托的常用的四種形式:

//delegate 匿名委托

Niming nm = delegate (string str)

{

Console.WriteLine("我是匿名委托" + str);

return str.ToUpper();

};

Console.WriteLine(nm("nihao"));

nm = delegate (string str)

{

Console.WriteLine("我是匿名委托" + str);

return str.ToLower();

};

Console.WriteLine(nm("NiHAO"));

//lambda 表達式

//格式:(參數) =>{要執行的方法體;};

Test test = (int a) => { a *= 10; Console.WriteLine(a); };

test(2);

GreetingDelegate gd = (string name) =>

{

Person.EnglishSpeek(name);

Person.ChineseSpeek(name);

Person.EnglishSpeek(name);

};

gd("小麗");

//Func 委托 最后一個為返回值類型out

Func s = delegate (string str1, string str2)

{

return str1 + str2;

};

Console.WriteLine(s("a", "b"));

//Action委托 不需要返回值

Action str = delegate (string str1, string str2)

{

Console.WriteLine(str1 + str2);

Person.EnglishSpeek(str1);

};

str("你好", "喬安");

最后,我們對委托做一個總結:

委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。

文章“【Unity基礎知識】委托和事件”已幫助

>>本文地址:http://www.028benet.com/zhuanye/2021/67987.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 日本成人在线网站| 欧美激情综合网| 国内自产一区c区| 亚洲国产日韩欧美| 国产色在线视频| 里番本子侵犯肉全彩3d| 无码人妻丰满熟妇区五十路| 动漫美女www网站免费看动漫| eeuss中文字幕| 欧美国产日韩另类| 国产午夜精品1区2区3福利| 中文字幕丰满乱孑伦无码专区 | 99这里只精品热在线获取| 欧美日韩欧美日韩| 国产在线91精品入口| 一级黄色片免费观看| 毛片免费视频在线观看| 国产成人精品免费直播| 中文字幕avdvd| 永久在线免费观看| 国产性天天综合网| 一级做a爱视频| 欧美成人免费全部| 国内一区亚洲综合图区欧美| 亚洲AV无码专区国产乱码电影| 胸奶好大好紧好湿好爽| 天堂√在线中文最新版8| 五月天婷亚洲天综合网精品偷| 美女胸又大又黄又www的网站| 在私人影院里嗯啊h| 久久精品乱子伦免费| 男女搞基视频软件| 国产成人黄色小说| yy6080新视觉午夜伦被窝 | 久久精品电影院| 精品久久久久久久无码| 国产精品无码av片在线观看播| 亚洲欧美日韩综合一区久久| 香港三级理论在线影院| 天天在线综合网| 久久在精品线影院精品国产|