C#学习之------委托

1、向窗体中添加控件的最少步骤:                 窗体的句柄为this

private System.Windows.Forms.Button button1;                //声明button类变量button1

this.button1 = new System.Windows.Forms.Button();       //创建button对象,其(name属性)句柄为button1-----实例化

this.Controls.Add(this.button1);                                      //通过句柄button1,将button1控件添加到窗体中

c#委托声明实例化与调用

转载地址:http://blog.csdn.net/han_yankun2009/article/details/25919565

系统访问数据或调用方法有两种操作方式:一种是通过名称访问或调用,另一种是通过所在的内存地址来访问调用。为了系统的安全与稳定,NET Framework的CLR库不允许程序通过指针来直接操作内存中数据或方法,而是通过托管机制来访问内存中数据或调用内存中的方法。委托就是C#提供的一种以托管机制调用方法的特殊数据类型,其作用于房屋租凭中介机构类似。
 
下面我们主要围绕以下三点
 
    //1.定义委托  
    //2.委托的实例化 
    //3.委托的调用,实际上是将委托指向已经实现的某个方法 
 
    //注意:调用的方法必须返回类型和定义的委托返回类型一致 
 
 
 委托是一个类,它定义了方法的类型,使得可以将方法当做参数进行传递。
 
一:委托的定义
 
在C#中使用关键字delegate声明委托。声明委托的一般形式是:
 
//委托的定义  
    // [访问修饰符]  delegate  数据类型  委托名(参数列表....) 
 
在使用委托前是一定先要定义的

[csharp] view plaincopyprint?

  1. 例如:Delegate void d(int x)

2、public delegate void dlgleixing(string str);     //声明了一个参数为string str无返回值的delegate类型
 
二:实例化( 与方法绑定) 


为了与命名方法一起使用,委托必须用具有可接受签名的方法进行实例化。
 
实例化的方法可用下列方法各项之一

  • “委托创建表达式”中引用的静态方法,或者
  • “委托创建表达式”中引用的目标对象(此对象不能为 null)和实例方法
  •  另一个委托

例如:

[csharp] view plaincopyprint?

  1. Delegate void d(int x)
  2. delegate void D(int x);
  3. class C
  4. {
  5. public static void M1(int i) {...}
  6. public void M2(int i) {...}
  7. }
  8. class Test
  9. {
  10. static void Main() {
  11. D cd1 = new D(C.M1);      // static method
  12. Test t = new C();
  13. D cd2 = new D(t.M2);      // instance method
  14. D cd3 = new D(cd2);      // another delegate
  15. }
  16. }

三.委托调用


 
创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:

[csharp] view plaincopyprint?

  1. public delegate int MathOp(int i,int j);//定义委托
  2. class DelegateTest
  3. {
  4. public static int  add(int i, int j) {//方法
  5. return i + j;
  6. }
  7. public static int Mutiply(int num1, int num2) {//方法
  8. return num1 * num2;
  9. }
  10. static void Main(string[] args)
  11. {
  12. MathOp mo = new MathOp(add);//委托的实例化,指向add方法
  13. MathOp maOp = new MathOp(Mutiply);//委托的实例化,指向Mutiply方法
  14. Console.WriteLine(mo(10, 20));//委托的调用
  15. Console.WriteLine(maOp(4, 5));//委托的调用
  16. Console.ReadLine();
  17. }
  18. }
  19. }

认识:

以前对委托的认识只是知道委托是方法的调用。通过这次的项目实例了解到委托也是需要定义,实例化与调用的。还是先前学艺不精占呀。委托的使用通常与匿名函数或lambda表达式匹配使用,下篇介绍匿名函数

时间: 2024-08-08 01:27:16

C#学习之------委托的相关文章

C#学习:委托、事件、匿名方法

一.委托: 委托给我的感觉就是一个种类型,可以让方法更具面向对象的特性——你看,其实我也没说明白,因为我也不大理解.还是一步步往下学吧. 具体来说,委托就是一个类似下面的这种东西: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace ConsoleTestCsharp { class Program { d

.net学习之委托和事件

1.什么是委托通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器上传图片: 2.委托语法准备一个方法:string Hello(string userName){} string Hello2(string userName){}声明委托类:delegate string DGSayHi(string userName);创建委托对象:DGSayHi dgSay = new DGSayHi(Hello); 或 DGSsyHi dgSay = Hello;追加方法:dgSay

(转).net学习之委托和事件

.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string userName){}        string Hello2(string userName){} 声明委托类:delegate string DGSayHi(string userName); 创建委托对象:DGSayHi dgSay = new DGSayHi(Hello); 或 DGSsyHi

深入学习C#委托

一基础学习: .Net delegate类型:委托跟回调函数是很有渊源的.回调其实跟通知机制有关,考虑这样一个基本的事件序列: a对象调用了b对象的某个方法,希望b对象在其方法完成之时调用a对象的某个方法.要实现这样的过程,要求b对象持有a对象的引用(引用一般作为b 对象方法的参数传入),且“知道”a对象的那个特定方法.这个方法就是我们说的那个回调函数.本质上,.net的委托类型是一种类型安全的指向方法的对象(c++中如函数指针)亦或是指向一系列方法的对象.所谓类型安全指:类型必须匹配,变量或引

C#学习笔记 ----委托、Lambda表达式和事件

委托是寻址方法的.NET版本 Lambda运算符“=>”的左边列出了需要的参数 Lambda运算符右边定义了赋予lambda变量的方法的实现代码 事件基于委托,为委托提供了一种发布/订阅机制 事件侦听器 要使用弱事件,需要创建一个派生自WeekEventManager类的类 WPF使用弱事件模式和事件管理器类 CollectionChangeEventManager.CurrentChangeEventManager CurrentChangingEventManager.PropertyCha

C#基础学习之委托的理解和应用

委托的使用和语法定义 委托的使用是由四步来完成的,依次为:声明委托.创建委托对象.委托关联方法.调用 我们用一个例子来说明这四步如何操作,我们完成一个老板委托员工写报告的实例,看如何实现. 首先我们应该定义两个类,老板类Boss和员工类Employee,老板委托员工写报告,其实是老板什么都没做,而是告诉员工去做事情(写报告), 那我们的定义如下 public class Boss { //声明委托 public delegate void DoWorkEventHandler(string co

C#学习_委托类型以及Action/Fanc_2018Oct

委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托特别用于实现事件和回调方法.所有的委托都派生自 System.Delegate 类.       (简单说就是委托是一个空壳,调用委托就是对其赋值(值为某一方法)并执行该值;)       简单实现五步骤: 1.声明委托类;                        -->(如: public delegate void MyDelegate();) 2.定义目标函数  ;           

委托的进一步学习3

嘿嘿,今天的晚上是平安夜,预祝大家节日快乐!在这个冰冷的冬天,给自己一点温暖不论怎么样,生活中的我们要心情愉悦哦,下面就来总结一下我们今天学习的内容,其实我们今天是学习了委托以及对Linq的初步认识吧,总结一下今天学习的内容吧. 一.Lamda表达式在委托中的使用 delegate string MyDel(string n,string p); public class Program { static void Main(string[] args) { #region Lamda表达式 #

委托的初步学习

今天我们休息啦,所以那也没有学习好多的啦,但是前几天我们学习了委托,只是简单地知道了概念,简单的知道委托的参数是一个方法啦,我总是感觉自己没有掌握的啦,所以想有时间啦在总结一下的啦,但是我之前上课听得还太过简单的啦,以至于再多一个方法,顶一个委托类型的参数都不知道,感觉对于委托这个知识点还是要练习的啦,而见天学习的也没有多少啦,现总结一下吧,再好好的想一想啦,下面就简单的总结下我写的例题吧. 一.初步认识委托 delegate int Method(int a,int b); class Pro