C#高级--通过类来理解学习委托
namespace classanddelegate
{
class Program
{
static void Main(string[] args)
{
//这是类的实例化
Test test = new Test();
//创建一个委托实例的时候,需要确定需要与哪些方法关联起来。
MyDelegate d = new MyDelegate(MyMethod); //创建了一个委托实例,要和方法关联起来
d();
}
static void MyMethod()
{
Console.Write("委托方法");
}
}
/// <summary>
/// delegate 就是一种类型 定义了一个无参无返回值的委托,委托会对应具体的类型
/// </summary>
public delegate void MyDelegate();
/// <summary>
/// 声明了一个类型
/// </summary>
class Test
{
//类的成员
}
}
委托是一种类型,应该说是函数指针,可以用来传递方法的,可以用一个变量来接收方法,这个就是委托。因为委托可以接收方法,所以说定义委托的时候就应该要规定方法的返回值和参数,这样就会限定你所定义的这个委托就只能接收这个方法。这里也体现它是安全的,不是随意指向的。
(一)为什么要有委托呢
委托的作用:委托是一种数据类型,这种数据类型的变量可以赋值一个方法,也就是说我们可以在A方法的参数里面(设置一个delegate变量),就可以把方法作为参数进行传递了。这样做的好处就是:一般来讲,我们的方法调用的话,都会有局限于某一个域中。如果有了委托,方法就不在局限于某个域中,而是在任何地方都可以随便调用。
当你定义一个委托的时候,要严格按照将来存储什么方法来定义。
委托使用步骤
1、定义一个委托
2、声明一个委托变量,委托变量也是一个引用类型。
委托之所以说是安全的,
是因为定义委托的时候是这样的 public deleagate int Method(
类的定义是由关键字class 定义一个类 class 类名
委托的定义是由关键字delegate delegate 委托名称,
C#高级--通过类来理解学习委托的更多相关文章
- 通俗理解C#委托和事件
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
- ch01.深入理解C#委托及原理(转)
ch01..深入理解C#委托及原理_<没有控件的ASPDONET> 一.委托 设想,如果我们写了一个厨师做菜方法用来做菜,里面有 拿菜.切菜.配菜.炒菜 四个环节,但编写此方法代码的人想让 ...
- [转]深入理解学习GIT工作流
深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- [BS-18] 对OC中不可变类的理解
对OC中不可变类的理解 OC中存在很多不可变的类(如NSString,NSAttributedString,NSArray,NSDictionary,NSSet等),用它们创建的对象存在于堆内存中,但 ...
- selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!
selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!
- 对Java中properties类的理解
转载于:https://www.cnblogs.com/bakari/p/3562244.html 一.Java Properties类 Java中有个比较重要的类Properties(Java.ut ...
- AtomicInteger类的理解与使用
AtomicInteger类的理解与使用 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Sample1 { private stati ...
- FileChannel类的理解和使用
FileChannel类的理解和使用(java.nio.channels.FileChannel) 知识点: 1.FileChannel类及方法理解:2.普通输入输出流复制文件:3.FileChann ...
随机推荐
- iOS返回一个前面没有0,小数点后保留两位的数字字符串
/* * 处理一个数字加小数点的字符串,前面无0,保留两位.网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的. */ -(NSString*)getTheCorrectN ...
- XML.04-dom4j和XPath
body,td { font-family: calibri; font-size: 10pt } XML.04-dom4j和XPath dom4j的基本使用 XPath 啥是XPath XPath语 ...
- NodeJS 错误处理最佳实践
NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管.但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学.如果你实在没有耐心,那就直接绕过长篇大论跳到 ...
- Angular JS中双击事件ng-dblclick避免同时触发两次单击事件ng-click的解决方案
有些需求中,需要一个元素上既有双击事件,也有单击事件,而两者实现的效果不一样. 这时可以使用ng-dblclick与ng-click来实现需求,但是要避免浏览器将双击事件误认为是两次单击事件,从而出现 ...
- egrep 及扩展正则表达式
grep -E 表示支持扩展的正则表达式 grep -E = egrep 一.字符匹配: 扩展模式下的字符匹配与基本正则表达式的字符匹配相同,如: . 表示任意单个字符 [] 表示范围内人任意单个字符 ...
- 摘录ECMAScript官方文档中重要的两段话
Every object created by a constructor has an implicit reference (called the object’s prototype) to t ...
- 自动备份SQL数据库 并删除指定日期之前的备份文件
/// <summary> /// 数据备份 /// </summary> /// public bool DataBackup(st ...
- iOS有用的三方库
DKNightVersion https://github.com/Draveness/DKNightVersion#podfile 用来为APP添加夜间模式和换肤功能
- DOM元素querySelectorAll可能让你意外的特性表现
一.时间紧急,废话少说 本文所在的页面藏匿了下面这些代码: <img id="outside"> <div id="my-id"> &l ...
- Android菜鸟成长记16 -- JSON的解析
JSON的定义 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...