c#之高级特性

目标 c#高级特性

一.C#委托
概念:委托是一种引用类型,表示对方法的引用,
这个方法是具有特定返回值类型和参数的方法。
方式一:通过委托实例调用方法
方式二:使用委托把方法作为参数传递给其它方法。
委托(方式一)的使用步骤:
1.声明委托
语法:delegate 返回值类型 委托名(参数列表)
delegate string Operation(string name);
2.实例化委托
委托名 委托变量名=new 委托名(方法名称)
c#1.0: 委托名 委托变量名=new 委托名(方法)

   Operation operation1 = new Operation(ChineseSayhello);

c#2.0: 委托名 委托变量名=方法

  Operation operation1 = ChineseSayhello;

c#3.0: 委托名 委托变量名 = 拉蒙达表达式

  Operation operation1 = x=>{ return x+":早上好"}

3.调用委托
a.无返回值
委托变量名.invoke(参数);
或:
委托变量名(参数);
b.有返回值:
string 变量名 = operation1.Invoke(参数);
string csh = operation1.Invoke(“张三”);
或:
string csh = operation1(“张三”);
注:多播委托—可通过“+”运算符将多个对象分配到一个委托实例上。
二.隐式类型和匿名类型
a.隐式类型:是编译器根据变量的初始值“推断”出的变量的类型(局部推断类型)
特点: 1.必须赋初始值,而且不能赋空值
2.变量类型不能改变,否则就会报错。
b.匿名类型:匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。
包括:1.匿名类:匿名类其实本质和普通定义的类一样,
只不过是由系统的编译器来完成命名
2.匿名方法:匿名方法是没有名称只有主体的方法,
它提供了一种传递代码块作为委托参数的技术。
三.扩展方法和yield
a扩展方法
概念:就是在不修改原类型的前提下,增加新方法。
1.扩展方法必须是静态方法 (static)
2.使用“this 类型”指明要扩展的类型
定义:Public static string 扩展方法名(this int …,参数)
调用:int a
a.扩展方法名(参数)
b.yield
可以将符合条件的记录查询出来,中文意思产出,返回一个集合类型Ienumberable。
四.lambda表达式
是一个通过委托传过来的匿名方法,可以结合Linq来完成相关的工作。
使用Lambda运算符“=>”,读作“goes to" (转到)
语法:形式参数=>方法体
规则:

  1. 参数不用类型声明,如果只有一个形参则小括号可以省略
  2. 如果方法体只有一条语句,则大括号,return,分号都可以省略
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

no longer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值