一、推断类型var关键字
1:var根据变量的初始值自动判断局部变量类型
static void Main(string[] args)
{
var a = 100;
var Name = ".NET开发";
Console.WriteLine($"共有{a} 个人学习{Name}");
Console.ReadKey();
}
输出:共有100 个人学习.NET开发
2:注意点
var只能定义在局部变量,而不能定义成员变量
定义的时候必须同时完成赋值,而且不能使用var变量定义为null
var不是一个新类型,只是用来修饰一个推断出具体类型的局部变量
3:var 定义变量和普通定义的变量没有任何区别
var a = 100;
int b = 100;
二、什么是匿名类
1:匿名类就是没有具体的对象
static void Main(string[] args)
{
var Person = new
{
Name = "小张",
Age = 25,
ClassName = "高级班"
};
Console.WriteLine("姓名:{0} 年龄:{1} 班级:{2}",
Person.Name, Person.Age, Person.ClassName);
Console.ReadKey();
}
输出:姓名:小张 年龄:25 班级:高级班
2:匿名类的特点
直接用new关键字创建对象,使用var定义对象变量
不要提前创建类,编写类的成员属性,而且只能添加独享的属性
三、匿名方法
1:匿名方法就是这个方法没有具体名字,而只有委托关键字,方法参数,方法体
//【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
public delegate int CalculatorDelegate(int a, int b);
static void Main(string[] args)
{
//委托变量接收一个匿名方法
CalculatorDelegate Cal = delegate (int a, int b)
{
return a + b;
};
int result = Cal(10, 20);
Console.WriteLine("10+20={0}", result);
Console.ReadKey();
}
输出:10+20=30
四、Lambda表达式(参数列表)=>{方法体}
1:Lambda表达式,可以简练编写代码块
//【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
public delegate int CalculatorDelegate(int a, int b);
static void Main(string[] args)
{
//委托变量接收一个匿名方法
CalculatorDelegate Cal = (int a, int b) => { return a + b; }; // => goes to
int result = Cal(10, 20);
Console.WriteLine("10+20={0}", result);
Console.ReadKey();
}
输出:10+20=30
2:参数列表中参数类型可以是“明确”类型或者“推断”类型
如果是推断类型,则参数的数据类型将由编译器根据值自动推断出来
//【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
public delegate int CalculatorDelegate(int a, int b);
static void Main(string[] args)
{
//委托变量接收一个匿名方法
CalculatorDelegate Cal = (a,b) => { return a + b; }; // => goes to
int result = Cal(10, 20);
Console.WriteLine("10+20={0}", result);
Console.ReadKey();
}
输出:10+20=30
3:如果参数只有一个,可以省略(),如果方法体只有一行代码可以省略{}
//【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
public delegate int CalculatorDelegate(int a);
static void Main(string[] args)
{
//委托变量接收一个匿名方法
CalculatorDelegate Cal = a => a ; // => goes to
int result = Cal(10);
Console.WriteLine("{0}", result);
Console.ReadKey();
}
输出:10
4:Lambda与匿名方法的比较
Lambda表达式本身就是匿名方法
Lambda表达式参数允许不指明参数类型,匿名方法的参数必须明确指出参数类型
Lambda表达式允许由单一表达式或者多条语句组成,而匿名方法不允许单一表达式形式