C#中的隐式类型var——详细示例解析

从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var。隐式类型可以替代任何类型,它的具体类型由编译器根据上下文推断而出。

下面就让我来总结下隐式类型的一些特点:

1.var类型会被编译器根据初始值的类型推断出具体的类型
eg:

 ;;;, Name = "Kobe" };//正确
 //匿名类中的属性一定要赋初始值,否则报错
 var person = new { Age, Name };//报错:当前上下文中不存在"Age" 当前上下文中不存在"Name"

使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样,因为还没运行时编译器就已经根据上下文推断出是什么类型了,所以要比object效率要高。善用隐式类型,在难以确定类型的情况下如将用于存储匿名类型或匿名类型集合时使用会有奇效,在新语法中的使用颇多,是一把编程利器。

更多相关文章
  • 2.1 隐式类型的局部变量用var 关键字来声明局部变量,下面一段演示代码:staticvoid Main(string[] args)         {              // 用var声明局部变量        var stringvariable = "learning h ...
  • Linq之隐式类型、自动属性、初始化器、匿名类
    目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍linq系列的基础知识,隐式类型,自动属性,初始化器,匿名类的相关概念,这些内容也许与linq相关也 ...
  • C++,否则跳过初始化步骤.这个标志位实际上就是一个隐式的计数器,虽然它只是一个0-1计数.知道了编译器的这个"内幕",你可以用下面的代码轻易的绕过初始化检查,让函数中的static变量在每次被调用时都被初始化(代码有些BT,不适者勿看).void Test(int initVa ...
  • 在之前学习AngularJS的过程中,都是用到了显式依赖注入,比如:依赖注入$scope.这么写有个弊端,在发布的时候,往往要压缩JavaScript代码,压缩时,会替换掉变量名.比如$scope会替换成长度更小的a,但是$scope这个名字又是不能改动的,否则会无法识别.所以这种隐式的依赖注入方法 ...
  • MySQL隐式转化整理 前几天在微博上看到一篇文章:价值百万的 MySQL 的隐式类型转换感觉写的很不错,再加上自己之前也对MySQL的隐式转化这边并不是很清楚,所以就顺势整理了一下.希望对大家有所帮助. 当我们对不同类型的值进行比较的时候,为了使得这些数值「可比较」(也可以称为类型的兼容性),My ...
  • object App { implicit def toM2(m1:M1): M2 ={ println("m1 to m2") new M2() } class M1 { def method1(): Unit ={ println("invoke method 1& ...
  • JSP中的EL隐式对象
    一 介绍       JSP表达式语言(Expression Language),简称EL,为存取变量.表达式运算和读取内置对象等内容提供了新的操作方式.目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法 ...
一周排行
  • 1.安装Docker之后,下载不了镜像,错误为[[email protected]~]# docker run hello-world Unable to find image 'hello-world:latest'  ...
  • Android开发学习笔记:浅谈Tab选项卡
    Tab选项卡是一个非常方便的组件.一.使用Tab组件的步骤:1.在布局文件中使用Frame ...
  • #删除原来的公钥文件rm -f ~/.ssh/id_rsa.pub#将新建立的公钥文件属性设置为400chmod 400 ~/.ssh/authorized_keys3.2.2导入到要免密码登录的服务器#将公钥复制到 ...
  • 1.实验场景操作系统:Centos 5.5JDK版本:1.7.0_21Flume版本:1.3.1Hadoop版本:0.20.2配置1个agent ,2个collector,1个storage2.安装步骤JDK+flu ...
  • 作者:江小帅 微软的技术知识库实在是太庞大了,以至一些新的功能我们在彻底熟悉的时候会花费太多的时间,没办法,这是由于产品的复杂性决定的.面对OS或服务组件及AD我们应该经常问的是:默认为什么会出现这个?为什么要有这样 ...
  • IPS在线模式实验1-VLANPair
    1.拓扑图: 2.接口配置:R1(config)#int f0/0R1(config-if ...
  • 博客内容好久都没更新了,也不是没有时间,大部分是因为懒,说说我最近在忙啥吧,主要还是学习,最近每周六要去上oracle的课程还办了网络视频课程学习大数据相关的课程,nosql等等,最近因为发现mysql确实是很好用的 ...
  •     以下脚本实现SQL server多个数据库的差异备份,备份文件名为:cy_数据库_sqldb_日期.bak,并将所有备份文件进行压缩,压缩文件名为:cy_sqldb_日期_时间.bak.rar,压缩完毕后自动 ...
  • apple-touch-icon 可以了解到这是一个类似网站favicon的图标文件,用来在iphone和ipod上创建快捷键时使用. 这个文件应当是png格式,57x57像素大小,放在网站根目录之下.如果准备的文件 ...
  • 网络化数据采集系统可以在很多远程监控的场合应用,其主要特点在于采集数据的远程传输.一个典型的网络化数据采集系统电路结构如下图所示:一个数据采集节点通常可以支持多通道并行采样.因此,前端输入通道支持多路并行输入.每路输 ...