<.net>委托初探
最近在学《.net深入体验与实战精要》。
今天就来初步讲解下委托。
一句话:委托定义了方法类型,可以将方法当做另一个方法的参数进行传递。委托包涵的只是方法的地址,而不是数据。类似于c指针。
委托的语法:
delegate void Saydelegate(string name);
delegate 是用于声明一个应用类型,用于封装命名方法或匿名方法。
委托的使用:
现在我想用委托的方法,输入name , 将"你好"转换成不同的language输出 "你好" + name.
using System;
namespace ConsoleApplication1
{
//首先声明委托
public delegate void SayDelegate(string name);
public class ClassPeople
{
public void Saychinese(string name)
{
Console.WriteLine("你好," + name);
}
public void SayEnglish(string name)
{
Console.WriteLine("Hello,"+ name);
}
//下面一句调用SayDelegate作为参数,委托调用执行的方法
public void DoWork(string name,SayDelegate Makesay)
{
Makesay(name);
} }
class Program
{
static void Main(string[] args)
{
ClassPeople cp = new classPeople{};
//委托实例的调用
cp.DoWork("李",cp.Saychinese);
cp.DOwork("li",cp.SayEnglish)
System.Console.ReadLine();
}
}
}
多播委托
将多个方法绑定到同一个委托上,当调用这个委托的时候就会依次调用绑定的方法。
class Program
{
static void Mainstring(string[] args)
{
ClassPeople cp = new ClassPeople();
string name1="李";
SayDelegate delegate1 = cp.Saychinese; //赋值,第一次绑定
delegate1 += cp.SayEnglish; //第二次绑定一个方法
cp.Dowork(name1,delegate1); //先后调用。
System.Console.ReadLine();
}
}
<.net>委托初探的更多相关文章
- C#委托初探
委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联.您可以通过委托调用其中已添加的方法列表.委托用于将方法作为参数传递给其他方法.事件处理程序就是通过委托调用的方法.您可以创建一个自定义方 ...
- C#委托与事件初探
最近刚刚接触C#,学到事件与委托部分无法理解,于是上网查阅了各种资料,终于明白了一些,在此进行总结. 一.C语言中的函数指针 想要理解什么是委托,就要先理解函数指针的概念.所谓函数指针,就是指向函数的 ...
- 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...
- C#委托与事件的简单使用
前言:上一篇博文从原理和定义的角度介绍了C#的委托和事件.本文通过一个简单的小故事,来说明C#委托与事件的使用方法及其方便之处. 在阅读本文之前,需要你对委托和事件的基本概念有所了解.如果你是初次接触 ...
- C#多线程之旅(4)——APM初探
源码地址:https://github.com/Jackson0714/Threads 原文地址:C#多线程之旅(4)——APM初探 C#多线程之旅目录: C#多线程之旅(1)——介绍和基本概念 C# ...
- (转)初探Backbone
(转)http://www.cnblogs.com/yexiaochai/archive/2013/07/27/3219402.html 初探Backbone 前言 Backbone简介 模型 模型和 ...
- 26.QT-模型视图之自定义委托
在上一章学习 25.QT-模型视图 后,本章接着学习视图委托 视图委托(Delegate)简介 由于模型负责组织数据,而视图负责显示数据,所以当用户想修改显示的数据时,就要通过视图中的委托来完成 视图 ...
- VB 共享软件防破解设计技术初探(三)
×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(一)http://bbs.pediy.com/sho ...
- Spring IOC容器启动流程源码解析(一)——容器概念详解及源码初探
目录 1. 前言 1.1 IOC容器到底是什么 1.2 BeanFactory和ApplicationContext的联系以及区别 1.3 解读IOC容器启动流程的意义 1.4 如何有效的阅读源码 2 ...
随机推荐
- linux 进程备忘
进程间同步互斥方式: 1.管道pipe(亲属进程适用),命名管道fifopipe 2.信号量 3.共享内存配合信号量
- (原)ubuntu下使用ftp软件
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6121663.html 参考网址: http://tieba.baidu.com/p/387426074 ...
- 表单控件之select
一.表单控件之表单 1.依次获取表单里的所有控件: for (i = 0; i < document.getElementById("formName").length; i ...
- c# 基础复习1
1. 类和对象 1.1 类和对象的概念 类:对象的类型,它不同于 int 等基本数据类型,因为类具有行为:也可以说是具有相 同特征和行为的一组对象的集合. 对象:对象是一个个你能看得见,摸得着的实体, ...
- WIN8 WIN10系统如何完全获取用户管理员权限
按住WIN+R 2 计算机配置----Windows设置----安全设置----本地策略----安全选项----用户账户控制:以管理员批准模式运行所有管理员,把启用改为禁止然后重启电脑
- EC2.0开启多规格后,编辑无法获取规格数据
我们其实一共碰到2个问题, 1. 一个是弹出了货品编辑画面,但是货品的明细没有2.有货品明细但是货品明细各个字段都是空的, 上面2种情况数据库都是有值的. 第一个问题解决方案: 修改html中的JS ...
- Apache虚拟主机的配置
虚拟主机的配置 基于IP地址的虚拟主机配置Listen 80DocumentRoot /www/example1ServerName www.example1.comDocumentRoot /www ...
- JS 操作一个数据值
任何语言都有自己的操作数据的方法: Js也不例外,js有3种重要的方式来操作一个数据值. 1>复制它.例如把它赋给一个新的变量. 2>把它作为参数传递给一个函数或方法. 3>可以和其 ...
- 关于popupwindow的两种实现方式
http://104zz.iteye.com/blog/1685389 android PopupWindow实现从底部弹出或滑出选择菜单或窗口 本实例弹出窗口主要是继承PopupWindow类来实现 ...
- Codeforces 161D Distance in Tree
题目大意:给出一棵n个节点的树,统计树中长度为k的路径的条数(1<=n<=50000 , 1<=k<=500) 思路:树分治! #include<cstdio> # ...