深入了解c# 匿名类型

作者:a 时间:2022-04-08 22:38:21 

一、什么叫做匿名类?

匿名类就是没有名字的类。匿名类不能被引用,只能再创建的时候用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));};
m3(5,6);

//lambda,表达式C#3.0
MySumHandler 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 是参数。

来源:https://www.cnblogs.com/chenyao-1424433719/p/11210197.html

标签:c#,匿名,类型
0
投稿

猜你喜欢

  • 快速了解hibernate配置文件与映射文件

    2023-11-04 23:02:26
  • Android利用SAX对XML进行增删改查操作详解

    2023-02-05 00:03:32
  • Java桥梁设计模式优雅地将抽象与实现分离

    2023-12-11 14:56:36
  • Java调用windows系统的CMD命令并启动新程序

    2021-11-27 17:09:13
  • JavaSE-面向对象(方法重写)

    2023-01-27 10:51:09
  • 利用spring的拦截器自定义缓存的实现实例代码

    2022-07-22 00:44:47
  • Android 文件存储与SharedPreferences存储方式详解用法

    2021-07-22 20:11:54
  • Java for循环几种写法整理

    2023-09-12 01:25:58
  • 详解Java实践之建造者模式

    2023-01-14 23:03:13
  • 基于Apache组件分析对象池原理的实现案例分析

    2023-11-05 16:55:57
  • android多开器解析与检测实现方法示例

    2022-04-01 11:43:15
  • Android Intent调用 Uri的方法总结

    2021-11-13 22:46:53
  • Java 按照字节来截取字符串的代码(不会出现半个汉字)

    2023-04-30 01:40:22
  • Android仿微信语音对讲录音功能

    2021-10-12 22:13:36
  • SpringBoot整合Pulsar的实现示例

    2021-10-09 17:39:35
  • 使用@Validated 和 BindingResult 遇到的坑及解决

    2022-12-18 20:36:28
  • android实现来电静音示例(监听来电)

    2021-09-23 09:43:48
  • Jenkins Host key verification failed问题解决

    2021-07-14 12:53:41
  • Android Style.xml的应用详解及代码实现

    2022-02-25 00:36:28
  • Android实现自动提取短信验证码功能

    2022-11-19 23:58:49
  • asp之家 软件编程 m.aspxhome.com