[C#3] 4-匿名类型
时间:2022-04-23
本文章向大家介绍[C#3] 4-匿名类型,主要内容包括1.DEMO、2.匿名类型剖析、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1.DEMO
使用匿名类型:
static void Main()
{
var someType = new { Name = "乱舞春秋", Age = 22, Sex = "男" };
Console.WriteLine(someType);
}
这个会输出什么呢?是someType的类型完全限定名吗?非也...看图:
我们都知道Console.WriteLine会去调用参数的ToString方法,那么可以肯定匿名类型someType重写了ToString方法。那么如果我再上面的基础上再加上一个匿名类型,只不过把属性循序换下,如下:
static void Main()
{
var someType = new { Name = "乱舞春秋", Age = 22, Sex = "男" };
var otherType = new { Name = "乱舞春秋", Sex = "男", Age = 22};
Console.WriteLine(someType);
Console.WriteLine(otherType);
}
结果如下:
2.匿名类型剖析
看的出来ToString返回的字符串的顺序和我们添加时的顺序相同。那么我这两个类型有共同的属性,只不过顺序不同, 编译器会为我们产生几个类型呢?看看IL代码:
是两个不同的类型!从匿名类型重写ToString方法就可以理解到编译器为什么会这么做了[...]。 如果属性的顺序和个数及名字都相同,那么编译器就会只生成一份。 匿名类型直接继承自System.Object,其成员是根据初始化器推断而来的读写属性,一般会结合var关键字来使用。
- 机器学习中分类与回归的差异
- 自然语言处理指南(第1部分)
- GreenDao 兼容升级,保留旧数据的---全方面解决方案
- 基于 xorm 的服务端框架 XGoServer
- 全面总结: Golang 调用 C/C++,例子式教程
- 架构之路(六):把框架拉出来
- 第二届游戏运营技术论坛——云时代的游戏运营之道
- 如何才能准确测量 APP 的功耗?
- 可用性更高:设计优秀的MySQL和Percona XtraDB集群
- 如何使用scikit-learn在Python中生成测试数据集
- OpenStack Neutron之持续测试
- 干货丨 用 Python 进行股票分析
- 小故事:架构师需要做什么?
- 浅谈用Python计算文本BLEU分数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [浅析] 特定场景下代替优化 if-else 的方案 (二)
- 面试官:mysql如何重置自增id
- 如何在kubernete集群上部署springboot应用
- lettuce连接池很香,撸撸它的源代码
- 浅谈kubernete中的flannel网络插件
- 聊聊Java中CompletableFuture的使用
- 开发更高可用、高质量的服务的一些建议
- kubernete编排技术一:pod
- Golang逃逸分析
- kubernete编排技术二:deployment
- Gearman介绍、原理分析、实践改进
- 『JWT』,你必须了解的认证登录方案
- 静态网站
- ansible超详细使用指南
- Linux下快速安装Python3和pip