EntityFramework 数据持久化
第一章 C#高级特性
前言:
本章主要讲述委托的语法及调用、匿名类型、C#扩展方法、Lambda表达式。
目录
一、C# 委托
1. 委托:具有更好的扩展性,可以用委托实例来调用方法,也可将方法作为参数传递给其他方法。
2.委托声明:
//创建委托
//语法
public delegate <return type>(返回类型) <delegate-name>(委托名) <parameter list>(参数列表)
//实例
public delegate string mydelegate(string s);
3.命名为托:
语法示例:
//命名委托
class Program
{
//1.建命名委托
public delegate 返回值类型 委托名(参数);
//2.创建方法
public static 返回值类型 方法名(参数)
{
Console.WriteLine(参数+"要输出的值");
}
static void Main(string[] args)
{
//3.实例化委托
委托名 别名= new 委托名(方法名);
//4.调用委托
别名.Invoke(赋参);
//暂停
Console.ReadKey();
}
}
案例实例:
创建一个委托输出:女孩,你要努力来见我
//命名委托
class Program
{
//1.建命名委托
public delegate 返回值类型 委托名(参数);
public delegate void myDelegate(string name);
//2.创建方法
public static 返回值类型 方法名(参数)
{
Console.WriteLine(参数+"要输出的值");
}
public static void getLove(string name)
{
Console.WriteLine(name+"你要努力来见我");
}
static void Main(string[] args)
{
//3.实例化委托
委托名 别名= new 委托名(方法名);
myDelegate my = new myDelegate(getLove);
//4.调用委托
别名.Invoke(赋参);
my.Invoke("女孩,");
//暂停
Console.ReadKey();
}
}
//输出结果
女孩,你要努力来见我
4.多播委托:一个委托指向两个或多个对象
案例实例:创建一个委托,计算 x+y 及 x*y 的值
//多播委托
class Program
{
//1.建命名委托
public delegate 返回值类型 委托名(参数);
public delegate void mydelegate(int x, int y);
//2.创建方法
public static 返回值类型 方法名(参数)
{
Console.WriteLine(算法);
}
public static void getSum(int x,int y)
{
Console.WriteLine(x + y);
}
public static void getPro(int x, int y)
{
Console.WriteLine(x * y);
}
static void Main(string[] args)
{
//3.实例化委托
委托名 别名= new 委托名(方法名);
mydelegate my = new mydelegate(getSum);//方法名
my += new mydelegate(getPro);//多番委托(mydelegate mydel = new mydelegate(getPro))
//4.调用委托
别名.Invoke(赋参);
my.Invoke(2, 3);
//暂停
Console.ReadKey();
}
}
//输出结果
5
6
二、匿名类型
匿名方法:不需要指定返回值类型
案例实例:创建一个委托,计算 x+y 的值
//匿名方法
class Program
{
//1.建命名委托
public delegate 返回值类型 委托名(参数);
public delegate void mydelegate(int x, int y);
static void Main(string[] args)
{
//匿名方法
委托名 别名=dlegate(参数)
mydelegate my = delegate (int x, int y)
{
Console.WriteLine(x + y);
};
//4.调用委托
别名.Invoke(赋参);
my.Invoke(2, 3);
//暂停
Console.ReadKey();
}
}
//输出结果
5
三、C# 扩展方法
C# 扩展方法:使用实例方法语法来调用静态方法(一种特殊的静态方法)
//创建一个类
namespace EF1.LX
{
//静态类
public static class serive(类名)
{
//静态方法 方法名(this 数据类型 参数) 第一个参数用this修饰
public static void SayHello(this string name)
{
Console.WriteLine(name+"对你说,你好!");
}
}
}
注意:第一个参数用this修饰
//主函数代码
static void Main(string[] args)
{
//扩展方法调用
//定义变量名的值
string name = "洛洛";
变量名.扩展名(.方法名)
name.SayHello();
}
四、Lambda 表达式
Lambda 表达式:匿名方法(没有方法名的方法),简洁高效
//Lambda 表达式
class Program
{
//1.建命名委托
public delegate 返回值类型 委托名(参数);
public delegate void mydelegate(int x, int y);
static void Main(string[] args)
{
//Lambda表达式
委托名 别名 = (参数)=>{}
mydelegate my = (int x, int y) =>
{
Console.WriteLine(x * y);
};
//4.调用委托
别名.Invoke(赋参)
my.Invoke(2, 3);
//暂停
Console.ReadKey();
}
}
//输出结果
6