日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#语法:委托与方法

發布時間:2024/10/14 C# 157 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#语法:委托与方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、了解委托(delegate)

* 委托是一種全新的面向對象語言特性,運行于.NET平臺

? ? *基于委托開發事件驅動程序變得簡單

*使用委托可以大大簡化多線程編程的難度

2、理解委托

*委托(delegate)可以看成是一種數據類型,它可以定義變量,不過是一種特殊的變量。

*委托定義的變量,可以接受的數值是一個或多個方法,可以理解成它是存放方法的變量,或理解成委托就是一個方法指針。

3、委托的使用方法


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Csharp控制臺練習{class Program{//【1】、聲明委托 (定義一個函數的原形:返回值+參數類型和個數)public delegate int DemoDelegate(int a, int b);//【2】、要存放的方法等具體實現功能(比如加減法)static int Add(int a, int b) { return a + b; }static int Sub(int a, int b) { return a - b; }static void Main(string[] args){//【3】、定義委托變量,并且關聯要存放于該變量的方法DemoDelegate objDel = new DemoDelegate(Add);//【4】、通過委托調用方法,而不是直接調用方法Console.WriteLine( objDel(10, 20));objDel -= Add;objDel += Sub;Console.WriteLine( objDel(10, 20));Console.ReadKey();}} }
此程序輸出結果為30 ? ? -10.

使用委托的步驟:

1、聲明委托:關鍵字delegate + 返回值 +委托名 +參數 。 返回值和參數怎么確定??當然是要和存放的方法類型要一致了

2、委托對象的定義。

3、將委托與方法關聯起來,除了在創建對象的時候關聯方法也可以通過 ?“ += " 綁定方法,也可以通過 ”-=“ 方法解綁 來實現方法的關聯。

4、通過委托調用方法。


以上就是委托關聯方法的具體步驟。但是上述代碼并不能體現委托的真正用處。本來用方法就能實現的功能,搞得那么復雜不是閑得慌?

委托的用途十分多,其中一個就是可以實現窗體之間的通信,或者說是數據傳遞。現在要實現下述功能:有多個窗體,一個是主窗體,和其他是從窗體,主窗體中有一個單擊按鈕,而在每個從窗體中同步顯示單擊按鈕的次數。要知道,一個窗體無法直接調用另一個窗體的方法,也無法直接操作另一個窗體的控件屬性,通過委托便可以實現。

1、從窗體代碼(frmOther1.)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Csharp窗體練習 {public partial class frmOther1 : Form{public frmOther1(){InitializeComponent();}public void Receive(string counter){labCounter.Text = counter;}} }


每個從窗體布局如圖:只有一個label(name:labCounter)控件,代碼中只多了一個Receive方法。

主窗體布局如圖:一個單擊按鈕(btnCounter)一個復位按鈕(btnClear).


using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Csharp窗體練習 {public delegate void ShowCounterDele(string counter);//【1】聲明個委托,一般在類外面聲明public partial class Form1 : Form{ShowCounterDele showCounterdel; //【2】定義委托對象public Form1(){InitializeComponent();frmOther frmother = new frmOther();frmOther1 frmother1 = new frmOther1();frmOther2 frmother2 = new frmOther2();showCounterdel += frmother.Receive; //【3】將委托對象與方法關聯起來showCounterdel += frmother1.Receive;showCounterdel += frmother2.Receive;frmother.Show();frmother1.Show();frmother2.Show();}private int count = 0;private void btnCounter_Click(object sender, EventArgs e){count++;showCounterdel(count.ToString()); //【4】、通過委托調用方法}private void btnClear_Click(object sender, EventArgs e){count=0;showCounterdel(count.ToString());}} }
執行上面程序,點擊主窗體中的按鈕,從窗體會顯示單擊次數。點擊主窗體的復位按鈕然后計數歸零。

總結

以上是生活随笔為你收集整理的C#语法:委托与方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。