委托,实例,代码
来源:互联网 发布:网络教育学历 编辑:程序博客网 时间:2024/06/03 21:54
委托的本质就是类型,但是和其他类型需要进行区分的是,委托是方法的类型。应用委托可以结合lambda表达式将方法作为参数进行传递
(注意:以下每一个实例都是可以直接复制进行运行的,可以自己进行尝试尝试)
委托类型实例1:将返回值和接受的参数类型相同的方法直接赋值给委托使用:直接见代码:
Program.cs类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @delegate
{
class Program
{
//定义一个返回值为int,参数为两个int类型的委托
public delegate int delegateAdd(int a,int b);
static void Main(string[] args)
{
delegateAdd d = add;
Console.WriteLine(d(1,2));
Console.ReadKey();
}
/// <summary>
/// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int add(int a ,int b)
{
return a + b;
}
}
}
委托类型实例2:可以直接将lambda表达式赋值为委托,然后通过委托直接调用,这样就不用生命一个参数,直接通过一个匿名函数就可以,是不是很方便呢?直接见下列代码
Program.cs文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @delegate
{
class Program
{
//定义一个返回值为int,参数为两个int类型的委托
public delegate int delegateAdd(int a,int b);
static void Main(string[] args)
{
delegateAdd d = (a, b) => { return a - b; };
int c = d(5, 3);
Console.WriteLine(c);
Console.ReadKey();
}
}
}
委托类型实例3:通过委托可以将方法作为参数传递过去,不难理解,之前我们接触的都是一个方法里面传递若干个参数进行操作,那么就不能将方法作为参数进行传递么?是可以的,看代码:
Program.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @delegate
{
class Program
{
//定义一个返回值为int,参数为两个int类型的委托
public delegate int delegateAdd(int a,int b);
static void Main(string[] args)
{
int r=add(testDelegate);
Console.WriteLine(r);
Console.ReadKey();
}
/// <summary>
/// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int add(delegateAdd delegateAdd)
{
return delegateAdd(2,4);
}
/// <summary>
/// 测试将这个方法作为参数进行传递
/// </summary>
public static int testDelegate(int a ,int b)
{
return a + b;
}
}
}
委托类型实例4:通过委托可以将方法作为参数传递过去,不难理解,之前我们接触的都是一个方法里面传递若干个参数进行操作,那么就不能将方法作为参数进行传递么?是可以的,除了上述的将方法名进行传递,同样也是可以通过传递lambda进行传递的,直接见代码,代码都是经过测试的,可以直接运行哦!
Program.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @delegate
{
class Program
{
//定义一个返回值为int,参数为两个int类型的委托
public delegate int delegateAdd(int a,int b);
static void Main(string[] args)
{
int r = add((a, b) => { return a+b});
Console.WriteLine(r);
Console.ReadKey();
}
/// <summary>
/// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int add(delegateAdd delegateAdd)
{
return delegateAdd(2,4);
}
}
}
- 委托,实例,代码
- 委托(委托实例化)
- 委托实例
- 委托实例
- 面向委托关联的js代码应用实例
- 委托,事件实例(转摘)
- 泛型委托实例
- 异步委托实例
- 委托实例化
- 事件委托实例
- C# 委托,事件 实例
- C# 委托,事件 实例
- 委托事件实用实例
- 多播委托实例
- C#委托-总结实例
- 委托的使用实例
- 简单的委托实例
- 委托简单实例
- JS右侧悬浮效果
- (数论)数位拆解---特殊乘法
- 多线程学习之ScheduledExecutorService
- JQ之CHECKBOX部分全选功能
- openwrt 支持bcm57780
- 委托,实例,代码
- 论中间件数据转发模式
- Linux运行或禁止root远程登录
- Java中如何封装自己的类,建立并使用自己的类库?
- 新的C/C++学习路线
- 终端
- CSS3之border-radius半弧展示
- leetcode2. Add Two Numbers
- 如何在客户端接收Action返回的JSON数据