首页 > 其他分享 >匿名类型、var隐式类型

匿名类型、var隐式类型

时间:2022-11-09 10:11:44浏览次数:72  
标签:Console 类型 匿名 var 方法 隐式

转自:https://www.cnblogs.com/chenyao-1424433719/p/11210197.html

C# 匿名类型

一、什么叫做匿名类?

  匿名类就是没有名字的类。匿名类不能被引用,只能再创建的时候用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.0 MySumHandler m3 = delegate(int i, int j){Console.WriteLine("{0}+{1}={2}",i,j,(i+j));}; //使用关键字 delegate 定义 无名函数(即匿名方法): 有参数列表,但无具体函数名,统一使用关键字《delegate》来表示定义的成员为《函数》,后期基本被3.0的lambda表达式所取代。 m3(5,6); //lambda,表达式C#3.0 MySumHandler m4 = (i,j)=>{Console.WriteLine("{0}+{1}={2}",i,j,(i+j));};//lambda表达式 可以 取代Action 、Func等等 委托对象的位置(PS:语句lambda在替换Expresstion的位置时,《可能》 需要强转;但表达式lambda通常不需要)
复制代码

八、Func和Action的使用:

  Func<TResult>和Action<T>是.NET的内置委托。Func<TResult>要求由返回值。Action<T>要求无返回值。

  在使用时,Func<T1,T2,……,T16,TResult>中尖括号中的最后一个类型就是返回值。

  Action<T1,T2,……,T16>,T1 至 T16 是参数。

 

标签:Console,类型,匿名,var,方法,隐式
From: https://www.cnblogs.com/changbaishan/p/16872634.html

相关文章