委托(一)-委托概诉

 
委托
1.         什么是委托
委托是一种引用方法的类型, 一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值 , 其实委托类似与 C++ 中的函数指针 , 但委托是类型安全和可靠的 , 委托是事件的基础
2.         委托概诉
l         委托类似于 C++ 函数指针,但它是类型安全的
l         委托允许将方法作为参数进行传递
l         委托可以用于定义回调方法
l         委托可以链接在一起 ;( : 对一个事件调用多个方法 )
l         方法不需要与委托签名精确匹配。
l         C#2.0 中引入了匿名方法的概念 , 该方法允许将代码作为参数传递 , 以代替单独定义的方法 ( 下面我们会讲到的 )
3.         何时使用委托而不使用接口
以下情况中使用委托 :
l         在设计事件的时
l         封装静态方法时
l         当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时
l         当类可能需要该方法的多个实现时
在以下情况中使用接口:
l         当存在一组可能被调用的相关方法时
l         当类只需要方法的单个实现时
l         当使用接口的类想要将该接口强制转换为其他接口或类类型时
l         当正在实现的方法链接到类的类型或标识时:例如比较方法
4.         委托的关联方式
1)        与命名方法关联
委托可以与命名方法关联。使用命名的方法对委托进行实例化时,该方法将作为参数传递这就是使用命名的方法 , 一般用于对静态方法货实例方法进行封装 (2.0 之前的版本中使用命名的方法是对委托进行实例化的唯一方式 )
2)        与匿名方法关联
匿名方法将代码块传递为委托参数,使用匿名方法就不必创建单独的方法,因此减少实例化委托所需要的编码系统开销
注意:
u       匿名方法的参数的范围是 匿名方法块
u       在目标在块外部的匿名方法块内使用跳转语句(如 goto break continue )是错误的。
u       目标在块内部的匿名方法块外部使用跳转语句(如 goto break continue )也是错误的
u       如果局部变量和参数的范围包含匿名方法声明,则该局部变量和参数称为该匿名方法的外部变量或捕获变量
5.         Dome
using System;
using System.Collections.Generic;
using System.Text;
 
namespace DelegaterDome
{
    delegate void Add(int x,int y);// // 定义一个委托方法
    class Program
    {
        static void Main(string[] args)
        {
            #region 匿名方法
            System.Threading.Thread t1 = new System.Threading.Thread(delegate()
            {
                System.Console.WriteLine("aaa");
                //System.Threading.Thread.Sleep(2000);
                System.Console.WriteLine("bbb");
            });
            t1.Start();
            int t2 = 10;
            int t3 = 20;
 
            Add add = delegate(int x, int y)
            {
                Console.WriteLine(" 总和为:{0}" ,x+y);
            };
            add(t2, t3);
            #endregion
 
            #region 命名方法
            add = new Add(Program.Sum);
            add(t2, t3);
            #endregion
            Console.ReadLine();
 
        }
 
        static void Sum(int x, int y)
        {
            Console.WriteLine(" 总和为:{0}" , x + y);
        }
    }
}
 
6.          
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值