c# lamda,var 匿名类

lambda 是实例化委托的一个参数,是一个方法
1.0 委托
2.0 匿名方法,delegate 关键字
3.0 lambda 表达式,参数列表 => goesto 方法体
4.0 省略参数类型,参数类型由委托推算出来,是语法糖
5.0 如何方法体只有一行,可以去掉大括号,分号
6.0 可以省掉 new 关键字

objec,var 匿名类3.0
4.0 dynamic 避开编译器检查
var 匿名类,是只读的,var是语法糖,由编译器自动推算


public delegate void NoReturnNoParameter();
public delegate void WithReturnWithPara(int x, int y);

public void Show()
{

}
public void Show3(int id ,int name)
{

}

{
//1.0 委托
NoReturnNoParameter method = new NoReturnNoParameter(this.Show);
}

{
//2.0 匿名方法,delegate 关键字;
int i = 10;
WithReturnWithPara method3 = new WithReturnWithPara(delegate (int id, int name)
{
Console.WriteLine("i="+i);
Console.WriteLine($"{id}{name} 高级班");
});
method3.Invoke(123,456);
}

{
//3.0 lambda 表达式,参数列表 => goesto 方法体
int i = 10;
WithReturnWithPara method3 = new WithReturnWithPara( (int id, int name)=>
{
Console.WriteLine("i=" + i);
Console.WriteLine($"{id}{name} 高级班");
});
method3.Invoke(123, 456);
}

{
//4.0 省略参数类型,参数类型由委托推算出来,是语法糖
int i = 10;
WithReturnWithPara method3 = new WithReturnWithPara((id,name) =>
{
Console.WriteLine("i=" + i);
Console.WriteLine($"{id}{name} 高级班");
});
method3.Invoke(123, 456);
}

{
//5.0 如何方法体只有一行,可以去掉大括号,分号
int i = 10;
WithReturnWithPara method3 = new WithReturnWithPara((id, name)
=>Console.WriteLine($"{id}{name} 高级班")
);

method3.Invoke(123, 456);
}
{
//6.0 可以省掉 new 关键字;
int i = 10;
WithReturnWithPara method3 = (id, name)=> Console.WriteLine($"{id}{name} 高级班");

method3.Invoke(123, 456);
}
{
WithReturnWithPara method = new WithReturnWithPara(Show3);
method += this.Show3;
method += (id, name) => Console.WriteLine();
}

{
//objec,var 匿名类3.0
object model = new
{
id = 2,
name = "csj",
age = 22
};
// model.id; 不能点出来字段,编译器不认可,只能传obj,运行时认可;

}
{
//4.0 dynamic 避开编译器检查
dynamic dmodel = new
{
Id=1,
name="csj"
};
Console.WriteLine(dmodel.Id);
}
{
//var 匿名类,是只读的,var是语法糖,由编译器自动推算
var vmodel = new
{
id = 3,
name = "csj"
};
Console.WriteLine(vmodel.id);
Console.WriteLine(vmodel.GetType());
//vmodel.id = 2;
}

posted @   大树2  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示