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#高级--通过类来理解学习委托的更多相关文章

  1. 通俗理解C#委托和事件

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  2. ch01.深入理解C#委托及原理(转)

    ch01..深入理解C#委托及原理_<没有控件的ASPDONET> 一.委托 设想,如果我们写了一个厨师做菜方法用来做菜,里面有 拿菜.切菜.配菜.炒菜 四个环节,但编写此方法代码的人想让 ...

  3. [转]深入理解学习GIT工作流

    深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...

  4. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  5. [BS-18] 对OC中不可变类的理解

    对OC中不可变类的理解 OC中存在很多不可变的类(如NSString,NSAttributedString,NSArray,NSDictionary,NSSet等),用它们创建的对象存在于堆内存中,但 ...

  6. selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!

    selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!

  7. 对Java中properties类的理解

    转载于:https://www.cnblogs.com/bakari/p/3562244.html 一.Java Properties类 Java中有个比较重要的类Properties(Java.ut ...

  8. AtomicInteger类的理解与使用

    AtomicInteger类的理解与使用 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Sample1 { private stati ...

  9. FileChannel类的理解和使用

    FileChannel类的理解和使用(java.nio.channels.FileChannel) 知识点: 1.FileChannel类及方法理解:2.普通输入输出流复制文件:3.FileChann ...

随机推荐

  1. Visual Studio 15 Preview 4安装

    今天看到了有Visual Studio 15 Preview 4的安装文件放出,便想去安装体验一下C# 7.0的新语法.谁知安装时遇到一个错误: 手动下载这个补丁安装后,还是提示这个错误.本来以为是还 ...

  2. iOS强制屏幕旋转

    /** 强制旋转屏幕为纵向 (注:这种方式 键盘不能旋转过来; iOS8.x下 UIAlterView旋转不过来  ) @return */ + (void)rotateOrientationPort ...

  3. 超高性能的json序列化之MVC中使用Json.Net

    先不废话,直接上代码 Asp.net MVC自带Json序列化 /// <summary> /// 加载组件列表 /// </summary> /// <param na ...

  4. CSS中浏览器开发商特定的CSS属性

    浏览器制造商(像Microsoft.Mozilla等,还有WebKit的后台人员等)通常会为他们的浏览器增加新的功能来测试新的特性, 或者实现一直在考虑但还没有得到标准组织批准的CSS扩展.在这些情况 ...

  5. SystemC简介

    SystemC是一种基于C++语言的用于系统设计的计算机语言,是用C++编写的一组库和宏.它是为了提高电子系统设计效率而逐渐发展起来的产物.IEEE于2005年12月批准了IEEE1666-2005标 ...

  6. 5.2视图中的Order by

    创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的:

  7. 【工作笔记】BAT批处理学习笔记与示例

    BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...

  8. js 滚动 学习

    // s:= 'document.getElementsByName(''seccodeverify'')[0].scrollTop=100;'; // s:='scrollTo(0,document ...

  9. Python之路-Day2

    二进制 1bit = 一个二进制位 8bit = 1byte 循环 for while 数据类型 数字.字符串.列表.元祖.字典.集合 字符编码 文件处理 for循环: for i in range( ...

  10. app跳转openURL,兼容方法

    - (void)openScheme:(NSString *)scheme {   UIApplication *application = [UIApplication sharedApplicat ...