C#3.0 为我们带来什么(5) —— 匿名类型
var employee= new{Age =25,Name = "james" }
无须显示声明一个类,而且在初始化器里面可以获取上下文的变量——闭包
这就是C#3.0里提供的匿名类型。
并且可以对声明的类型进行这样的访问
string name = employee.name;
来看看IL的实现。
.method public hidebysig instance void dd() cil managed
{
// 代码大小 22 (0x16)
.maxstack 3
.locals init ([0] class '<>f__AnonymousType0`2'<int32,string> employee,
[1] string name)
IL_0000: nop
IL_0001: ldc.i4.s 25
IL_0003: ldstr "james"
IL_0008: newobj instance void class '<>f__AnonymousType0`2'<int32,string>::.ctor(!0,
!1)
IL_000d: stloc.0
IL_000e: ldloc.0
IL_000f: callvirt instance !1 class '<>f__AnonymousType0`2'<int32,string>::get_Name()
IL_0014: stloc.1
IL_0015: ret
} // end of method testvar::dd
看到代码会想'<>f__AnonymousType0`2'从何而来呢?
来看il视图就知道了。
虽然匿名类型非常方便,但是我们无法通过代码来访问到'<>f__AnonymousType0`2',而且var不能定义全局变量与参数类型,所以导致了我们创建的匿名类型实例只能应用在函数内部。从而限制了匿名类型的使用。
转载于:https://www.cnblogs.com/tianyamoon/archive/2008/01/06/1028013.html
C#3.0 为我们带来什么(5) —— 匿名类型相关推荐
- C# 3.0新特性初步研究 Part5:匿名类型
匿名类型(Anonymouse Type)--这年头什么多系都匿名了 : ) 在初始化的时候根据初始化列表自动产生类型的一种机制. 典型的代码: 1class Program 2 { 3 ...
- ASP3.0给我们带来的新技术之一---DataShaping技术
ASP3.0给我们带来的新技术之一---Data Shaping技术 Data shaping(又可以被称为分层记录集) 如果你对ACCESS非常熟悉的话,它就类似与其中的子表.在你使用VB 进行数据 ...
- C#3.0 为我们带来什么(2) —— 自动属性
C#3.0 为我们带来什么(2) -- 自动属性 public int ID { get; protected set; } public string Name { get; set ...
- C#3.0 为我们带来什么(3) —— 初始化器
C#3.0 为我们带来什么(3) -- 初始化器 对比代码 c#2.0 Employee e1; private void ee1() { ...
- 给定一个介于0和1之间的实数,类型为double,打印它的二进制表示
2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个介于0和1之间的实数,类型为double,打印它的二进制表示.如果该数字无法精准地用32位以内的二进 ...
- 微软免费图书《Introducing Microsoft LINQ》翻译Chapter2.1:C# 3.0 特性(对象初始化表达式\匿名类型\查询表达式)...
本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理. 允许转载,但转载时请注明本版权声明信息,禁止用于商业用途! 博客园:韩现龙 Introducin ...
- 【错误记录】Kotlin 1.5.0 编译报错 ( 1.5.0 中 Float 不能直接转 Byte 类型 )
文章目录 一.报错信息 二.解决方案 一.报错信息 Kotlin 1.5.01.5.01.5.0 后语法与之前不同 , Float 类型不能直接转为 Byte 类型 , 需要先转为 Int , 然后转 ...
- 【Python深度学习】基于Tensorflow2.0构建CNN模型尝试分类音乐类型(二)
前情提要 基于上文所说 基于Tensorflow2.0构建CNN模型尝试分类音乐类型(一) 我用tf2.0和Python3.7复现了一个基于CNN做音乐分类器.用余弦相似度评估距离的一个音乐推荐模型. ...
- 如何提升鸿蒙战绩,蛰伏一年 鸿蒙系统2.0为我们带来了哪些升级?
去年的华为开发者大会上,我们看到了当时在网络上流传已久的HarmonyOS,鸿蒙系统.在随后的一年之中,鸿蒙系统在智慧屏上生根发芽,不断完善自身生态,让人觉得它异常低调.暂时的蛰伏只是为了能够更好地进 ...
最新文章
- Python为给定模型执行留一法交叉验证实战LOOCV(leave-one-out cross-validation)
- 支付宝支付 订单参数异常,请重新下单后再发起付款
- linux环境下java开发_Linux Ubuntu系统下Java开发环境搭建
- C语言 字符串的声明与使用
- Jsp页面用table表格来让文字和文本框对齐
- AntV 数据可视化解决方案发布
- springboot学习笔记-5 springboot整合shiro
- cuda对应pytorh安装
- CSS小技巧---半透明边框
- 树莓派 armv几_如何在具有armv6处理器的树莓派板上安装和使用Java 11和JavaFX 11
- java p12证书_java引用微信支付的p12证书文件
- windows ping 端口
- iwconfig 安装_arm linux iwconfig 等
- open数据库Timeout expired 错误
- 当你迷茫时,请努力做好现在的工作
- Qt笔记11:qt如何设置应用程序图标和可执行程序图标
- ue4开关门点击时onclicked事件没有触发的解决方案
- 数据可视化之大数据可视化
- Python中文件路径
- java巴特沃斯滤波器编程_EMG信号的低通巴特沃斯滤波器
热门文章
- 【Java面试题】3 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析...
- Linux学习--第十三天--日志、系统运行级别、grub加密
- SQL Between a and b
- PHP实现支付宝即时到账功能
- [UVa1213]Sum of Different Primes(递推,01背包)
- jenkins-git-gradle配置项目
- Java 多线程初探(二) - 通讯与协调
- 在Python-dataframe中如何把出生日期转化为年龄?
- springboot整合liquibase入门实例
- 并发编程(CountDownLatch使用)