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
下面我们主要围绕以下三点
//1.定义委托
//2.委托的实例化
//3.委托的调用,实际上是将委托指向已经实现的某个方法
//注意:调用的方法必须返回类型和定义的委托返回类型一致
委托是一个类,它定义了方法的类型,使得可以将方法当做参数进行传递。
一:委托的定义
在C#中使用关键字delegate声明委托。声明委托的一般形式是:
//委托的定义
// [访问修饰符] delegate 数据类型 委托名(参数列表....)
在使用委托前是一定先要定义的
- 例如:Delegate void d(int x)
2、public delegate void dlgleixing(string str); //声明了一个参数为string str无返回值的delegate类型
二:实例化( 与方法绑定)
为了与命名方法一起使用,委托必须用具有可接受签名的方法进行实例化。
实例化的方法可用下列方法各项之一
- “委托创建表达式”中引用的静态方法,或者
- “委托创建表达式”中引用的目标对象(此对象不能为 null)和实例方法
- 另一个委托
例如:
- Delegate void d(int x)
- delegate void D(int x);
- class C
- {
- public static void M1(int i) {...}
- public void M2(int i) {...}
- }
- class Test
- {
- static void Main() {
- D cd1 = new D(C.M1); // static method
- Test t = new C();
- D cd2 = new D(t.M2); // instance method
- D cd3 = new D(cd2); // another delegate
- }
- }
三.委托调用
创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:
- public delegate int MathOp(int i,int j);//定义委托
- class DelegateTest
- {
- public static int add(int i, int j) {//方法
- return i + j;
- }
- public static int Mutiply(int num1, int num2) {//方法
- return num1 * num2;
- }
- static void Main(string[] args)
- {
- MathOp mo = new MathOp(add);//委托的实例化,指向add方法
- MathOp maOp = new MathOp(Mutiply);//委托的实例化,指向Mutiply方法
- Console.WriteLine(mo(10, 20));//委托的调用
- Console.WriteLine(maOp(4, 5));//委托的调用
- Console.ReadLine();
- }
- }
- }
认识:
C#学习之------委托的更多相关文章
- C#学习之委托和事件
C#学习中,关于委托和事件的一些见解: 一.C语言中的函数指针 想要理解什么是委托,就要先理解函数指针的概念.所谓函数指针,就是指向函数的指针(等于没说-.-).比如我定义了两个函数square和cu ...
- C#学习之委托与事件
委托 语法: public delegate void MyDelegate(); 使用: 1.定义委托----public delegate void MyDelegate(); 2.注册委 ...
- .net学习之委托和事件
1.什么是委托通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器上传图片: 2.委托语法准备一个方法:string Hello(string userName){} string ...
- c#基础学习笔记-----------委托事件
这里有一个比较简单的委托实例应用(跨窗体操作控件) http://blog.csdn.net/bdstjk/article/details/7004035 还有一个比较详细的介绍并深入理解委托事件的讲 ...
- 6.26学习 异步委托回调函数 VS 多线程 VS 并行处理
描述: 我现在是轮询着构建实例,然后这个实例去执行一个方法,但是执行方法需要大约10s时间,全部轮询下来需要很长时间.所以我现在要更改,头给了我两个方法,1多线程 2异步委托回调函数. 异步委托回调函 ...
- 从一些代码方法中,去学习C#委托
先来看看下面一个类中的一些方法: class Bc { public double Add(double number1, double number2) { return number1 + num ...
- C#基础学习之委托的理解和应用
委托的使用和语法定义 委托的使用是由四步来完成的,依次为:声明委托.创建委托对象.委托关联方法.调用 我们用一个例子来说明这四步如何操作,我们完成一个老板委托员工写报告的实例,看如何实现. 首先我们应 ...
- C#图解教程学习笔记——委托
一.委托概述委托和类一样,是用户自定义类型,也是引用类型.但类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列预定义操作. 可以通过以下操作步骤来使用委托:(1)声明一个委托类型.委托声 ...
- C# ~ 从 委托事件 到 观察者模式 - Observer
委托和事件的部分基础知识可参见 C#/.NET 基础学习 之 [委托-事件] 部分: 参考 [1]. 初识事件 到 自定义事件: [2]. 从类型不安全的委托 到 类型安全的事件: [3]. 函数指针 ...
随机推荐
- C++重载赋值运算符
这是一道C++的面试题,下面在这篇博客中分析一下这个问题.先上题目: //题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: ...
- java代理课程测试 spring AOP代理简单测试
jjava加强课程测试代码 反射. 代理 .泛型.beanUtils等 项目源码下载:http://download.csdn.net/detail/liangrui1988/6568169 热身运动 ...
- Android 开发笔记 “Sqlite Cursor 使用”
使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿出来谈, ...
- rsync、ssh备份
Linux系统需求 为了实现这个备份程序,需要准备一个外部驱动器.您可以将备份写到一个外部USB磁盘,但这样做效率不高.因此,我假设您将备份写到位于网络某处的服务器中.这台服务器要为带有SSH和rsy ...
- DOC下编译和运行带有包的java类文件
前言: 带有包名的java类在DOC下编译可以成功,但是运行出错 错误: 找不到或无法加载主类 com.soanl.socket.MyServer D盘temp文件下有个Hello.java文件,包 ...
- C++那些库
在C++中,库的地位是非常高的. 基础库 boost“准”标准库 boost库是经过千锤百炼,可移植提供源代码的C++库,作为标准库的后备.跨平台的.有一个大的C++社区支持 Boost中比较著名的库 ...
- Java_java多线程下载-断点下载-超详细
基本原理:利用URLConnection获取要下载文件的长度.头部等相关信息,并设置响应的头部信息.并且通过URLConnection获取输入流,将文件分成指定的块,每一块单独开辟一个线程完成数据的读 ...
- hdu5115 Dire Wolf【区间dp】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4361169.html ---by 墨染之樱花 [题目链接]http://acm.hdu.e ...
- 实现AJAX局部刷新以及PageMethod方法的使用
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- java线程之停止线程
在Java中有以下3种方法可以终止一个正在运行的线程: 1.使用退出标志,是线程正常退出,也就是run方法完成后线程终止. 2.使用stop方法强制终止线程,但不推荐使用 ...