时间:2021-05-19
一、什么叫做匿名类?
匿名类就是没有名字的类。匿名类不能被引用,只能再创建的时候用new语句来声明。
二、匿名类的优势以及应用场景;
1、匿名类型提供了一种方便的方法,可以用来将一组只读属性封装到单个的对象中,而且并不需要首先显示定义一个类型。
2、类型名由编译器生成,并且不能在源代码级使用。每个属性的类型由编译器推断。
3、可通过是用new运算符和对象初始值创建匿名类型。
4、匿名类型通常用在查询表达式的 Select 子句中,以便返回原序列中每个对象的属性子集(Linq 中使用的比较多)。
三、匿名类的应用;
//匿名类型var news = new {title="冰红茶",day="2019-4-10",author="康师傅"};showInfo(news); //static void ShowInfo<T>(T news){ dynamic d = news; Console.WriteLine(d.title); Console.WriteLine(d.day); Console.WriteLine(d.author);}四、var隐式类型;
隐式类型var,声明变量是无需指定数据类型的,编译器会根据赋值判断其类型的一种机制,它的优势就在于,通过var这个隐式类型,可以提高开发人员的开发效率,很多时候可以不考虑对象的类型。
五、var 的使用规则;
1、var 类型会被编译器根据初始值的类型推断出具体的类型;
2、var 类型的局部变量必须赋予初始值;
3、无法将null赋值给隐式类型的局部变量;
4、var 类型变量的定义必须是在方法中或者在属性get、set 访问器中;
5、var 不能做方法的参数;
6、不能当作返回值类型;
7、语句中只能声明一次变量,声明后不能更改类型;
六、匿名方法;
匿名方法是C#2.0引入的一个新的特性,它允许开发者内联(inline)声明自己的函数代码而无须使用委托函数(delegate function)。
匿名方法的应用场景:
1、需要一个临时方法,这个方法使用次数极少;
2、这个方法的代码很短,甚至可能比方法声明都短的情况下使用;
七、匿名方法的实例:
MySumHandler m1 = new MySumHandler(Sum);m1(2,3);MySumHandler m2 = Sum;m2(3,4);//匿名方法,C#2.0MySumHandler m3 = delegate(int i, int j){Console.WriteLine("{0}+{1}={2}",i,j,(i+j));};m3(5,6);//lambda,表达式C#3.0MySumHandler m4 = (i,j)=>{Console.WriteLine("{0}+{1}={2}",i,j,(i+j));};八、Func和Action的使用:
Func<TResult>和Action<T>是.NET的内置委托。Func<TResult>要求由返回值。Action<T>要求无返回值。
在使用时,Func<T1,T2,……,T16,TResult>中尖括号中的最后一个类型就是返回值。
Action<T1,T2,……,T16>,T1 至 T16 是参数。
以上就是深入了解c# 匿名类型的详细内容,更多关于C# 匿名类型的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
扩展阅读c#基础系列1---深入理解值类型和引用类型c#基础系列2---深入理解String引言在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说
在很久之前,我写了一片文章详解C#匿名对象(匿名类型)、var、动态类型dynamic,可以借鉴。因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成员
本文实例分析了C#匿名方法与Delegate类型转换错误。分享给大家供大家参考。具体分析如下:问题描述C#2.0出现了匿名方法,这在一定程度上节省了我们维护代码
C#的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解。还有托管堆,栈,ref,out等等概念也是每个C#程序员都会接触到的概念,也是
1、深入了解对企业产品 对自己要推广的产品,先要深入了解,只有深入了解才能设计出合适的推广方案,才能把推广工作做的知名,效果发辉大。2、深入了解用户群 我们