委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托
namespace 简单委托
{
class Program
{
//委托方法签名
delegate void MyBookDel(int a);
//定义委托
static MyBookDel myBookDel;
//普通方法
public static void MathBook(int a)
{
Console.WriteLine("我是数学书" + a);
}
static void Main(string[] args)
{
myBookDel += MathBook;
myBookDel();
Console.ReadKey();
}
}
}
2.Action委托
/// <summary>
/// Action委托的优势是在于不用先去定义 方法签名 然后再用,可以直接使用
/// 他把他所支持的参数类型写在了<>里面,所以不需要单独去定义方法签名了
/// 不过Action不支持返回值
/// </summary>
namespace Action委托
{
class Program
{
static Action<int> ac;
public static void MathBook(int a)
{
Console.WriteLine("数学" + a);
}
static void Main(string[] args)
{
ac += MathBook;
ac();
Console.ReadKey();
}
}
}
3.Func委托
/// <summary>
/// Func委托几乎和Action一样,唯一的区别就是Func支持返回值
/// Func的<>里面的前面的是参数,最后一个值永远代表返回值的类型
/// </summary>
namespace Func委托
{
class Program
{
static Func<int, string> func;
public static string MyBook(int a)
{
return "哈哈哈" + a;
}
static void Main(string[] args)
{
func += MyBook;
Console.WriteLine(func());
Console.ReadKey();
}
}
}
4.匿名方法
/// <summary>
/// 匿名方法就是写委托时,不想再单独定义一个方法体,然后再进行+= 的一步操作,直接把方法体写在+= 的后面,这种方法就叫匿名方法
/// </summary>
namespace 匿名方法
{
class Program
{
delegate int NiMingDel(int a, int b);
static NiMingDel nimingDel;
static void Main(string[] args)
{
nimingDel += delegate (int x, int y) { return x + y; };
//计算1 + 2
Console.WriteLine(nimingDel(, ));
Console.ReadKey();
}
}
}
5.lambda表达式
/// <summary>
/// 匿名方法用lambda表达式去代替
/// = (参数) => {方法体}
/// </summary>
namespace 合体
{
class Program
{
delegate int NiMingDel(int a, int b);
static NiMingDel nimingDel;
static void Main(string[] args)
{
//一种语法糖
nimingDel = (x, y) => x + y;
//计算1 + 2
Console.WriteLine(nimingDel(, ));
Console.ReadKey();
}
}
}
6.合体
/// <summary>
/// Func<> 与 lambda表达式的合体
/// </summary>
namespace _6.合体
{
class Program
{
static void Main(string[] args)
{
Func<int, int, string> func = (x, y) => { return "计算结果是:" + (x + y); };
Console.WriteLine(func(, ));
Console.WriteLine("c#牛逼!");
Console.ReadKey();
}
}
}
委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解的更多相关文章
- C# delegate event func action 匿名方法 lambda表达式
delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...
- 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】
1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...
- C#多线程+委托+匿名方法+Lambda表达式
线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...
- C#委托总结-匿名方法&Lambda表达式
1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...
- Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)
Delegate,Action,Func,匿名方法,匿名委托,事件 (转载) 一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本 ...
- .NET Framework System.Array.Sort 数组类,加深对 IComparer、IComparable 以及泛型委托、匿名方法、Lambda 表达式的理解
本文内容 自定义类 Array.Sort 参考资料 System.Array.Sort 有很多对集合的操作,比如排序,查找,克隆等等,你可以利用这个类加深对 IComparer.IComparable ...
- 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List<类名>的比较
1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...
- JsonResult作为Action返回值时的错误
JsonResult作为Action返回值时的错误 System.InvalidOperationException: This request has been blocked because ...
- Controller 中Action 返回值类型 及其 页面跳转的用法
•Controller 中Action 返回值类型 View – 返回 ViewResult,相当于返回一个View 页面. -------------------------------- ...
随机推荐
- [.net 多线程]Semaphore信号量
信号量(Semaphore)是一种CLR中的内核同步对象.与标准的排他锁对象(Monitor,Mutex,SpinLock)不同的是,它不是一个排他的锁对象,它与SemaphoreSlim,Reade ...
- dynamic的好处
dynamic 可在反射.json反序列化时使用.已达到减少代码量的效果.看代码 using System; namespace ConsoleApp2 { class Program { stati ...
- JavaScript中的原型模式
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法.使用原型对象的好处是可以让所有对象实例共享它 ...
- NSCache 缓存
前言 NSCache 是苹果提供的一个专门用来做缓存的类,当内存 "不足" 或超过限制的时候,会自动清理缓存,使用时可以指定缓存的数量和成本. 用法与 NSMutableDicti ...
- ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 871. Minimum Number of Refueling Stops
A car travels from a starting position to a destination which is target miles east of the starting p ...
- 1232: 买不到的数目 [DP、数学]
1232: 买不到的数目 [DP.数学] 时间限制: 1 Sec 内存限制: 128 MB 提交: 21 解决: 10 统计 题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的 ...
- 【FAQ】Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServlet
原因: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr ...
- Math.random取随机整数
Math.random可以随机获取0-1的数字,今天用的需要给id随机赋值,小数不好控制,就只取整. 网上很多是 int i=(int)(Math.random()*100): 报错: 后找到 var ...
- BZOJ3156 防御准备 斜率优化dp
Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ...