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  数据类型  委托名(参数列表....) 
 
在使用委托前是一定先要定义的
 
  1. 例如:Delegate void d(int x)

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


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

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

例如:

  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. }

三.委托调用


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

  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表达式匹配使用,下篇介绍匿名函数

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

  1. C#学习之委托和事件

    C#学习中,关于委托和事件的一些见解: 一.C语言中的函数指针 想要理解什么是委托,就要先理解函数指针的概念.所谓函数指针,就是指向函数的指针(等于没说-.-).比如我定义了两个函数square和cu ...

  2. C#学习之委托与事件

    委托 语法:  public  delegate void MyDelegate(); 使用:  1.定义委托----public  delegate void MyDelegate(); 2.注册委 ...

  3. .net学习之委托和事件

    1.什么是委托通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器上传图片: 2.委托语法准备一个方法:string Hello(string userName){} string ...

  4. c#基础学习笔记-----------委托事件

    这里有一个比较简单的委托实例应用(跨窗体操作控件) http://blog.csdn.net/bdstjk/article/details/7004035 还有一个比较详细的介绍并深入理解委托事件的讲 ...

  5. 6.26学习 异步委托回调函数 VS 多线程 VS 并行处理

    描述: 我现在是轮询着构建实例,然后这个实例去执行一个方法,但是执行方法需要大约10s时间,全部轮询下来需要很长时间.所以我现在要更改,头给了我两个方法,1多线程 2异步委托回调函数. 异步委托回调函 ...

  6. 从一些代码方法中,去学习C#委托

    先来看看下面一个类中的一些方法: class Bc { public double Add(double number1, double number2) { return number1 + num ...

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

    委托的使用和语法定义 委托的使用是由四步来完成的,依次为:声明委托.创建委托对象.委托关联方法.调用 我们用一个例子来说明这四步如何操作,我们完成一个老板委托员工写报告的实例,看如何实现. 首先我们应 ...

  8. C#图解教程学习笔记——委托

    一.委托概述委托和类一样,是用户自定义类型,也是引用类型.但类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列预定义操作. 可以通过以下操作步骤来使用委托:(1)声明一个委托类型.委托声 ...

  9. C# ~ 从 委托事件 到 观察者模式 - Observer

    委托和事件的部分基础知识可参见 C#/.NET 基础学习 之 [委托-事件] 部分: 参考 [1]. 初识事件 到 自定义事件: [2]. 从类型不安全的委托 到 类型安全的事件: [3]. 函数指针 ...

随机推荐

  1. mysql中随机取出几条数据

    SELECT t1.id,title,extName,cover,url FROM shop_articles AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT M ...

  2. 关于一个wpf中的定时器

    http://www.cnblogs.com/royenhome/archive/2010/01/24/1655168.html

  3. 简单的UIScrollView 下拉刷新

    这里只贴主要代码 #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate&g ...

  4. android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK

    android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK ADB server didn ...

  5. javascript 字符串方法传参

    javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: '   <td align="left"><input type= ...

  6. Sicily-1438

    一.      题意 买二送一.排序之后隔三求和,求折扣的最大值. 二.      代码 // // main.cpp // sicily-1438 // // Created by ashley o ...

  7. 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题

    1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...

  8. asp.net根据模版生成Word小记

    最近遇到一个问题,客户提了一个新的需求,客户想要将显示在网页上的数据导出成Word进行套打,由于之前没有接触过这一块的内容,自己写的系统也没有使用这种功能,现在重头学习. 具体思路: 1.先制作Wor ...

  9. windows版的node.js简单示例

    1.下载node.exe放到任意目录,假设E:\nodejs\ 2.在E:\nodejs\下新建helloworld.js,输入以下内容,保存关闭 var http = require('http') ...

  10. plsql developer连接64位Oracle11g的解决方法

    1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载地址:http://www.oracle.co ...