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 中简化表达式的方法 ...
一周排行
  • Linux网站架构系列之PHP----部署篇
    PHP(Hypertext Preprocessor),中文译为超文本预处理器是一种通用开 ...
  •       两年前还让人“一头雾水”的“云计算”仍在云端漂浮,还是已经降落人间,实实在在服务日前在上海举办的“IEC 2011信息化时代企业发展论坛”上,<第一财经日报>采访了中国电子[0.90 0.00 ...
  • 胡雪岩5·烟消云散——读书笔记
    时隔8个月,才看完这本系列小说,不得不对胡雪岩的一生有所感叹! 先说说他最终为什么失败 1 ...
  • VisualStudio实现编写一套.net代码,同时编译到多个平台,多版本的操作笔记
    如题,把一套代码.NET代码.编译成多平台,多版本dll文件. 项目结构如图(Cvs文件读 ...
  • 同步代码块对象如同锁.持有锁的线程可以在同步中执行.没有持有锁的线程即使获取cpu的执行权.也进不去.因为没有获取锁.火车上的卫生间 --经典同步的前提:1.必须要有2个或者2个以上的线程.2.必须是多个线程使用同一 ...
  • 替换ESXi5.0证书
    配置环境ESXi 5.0Microsoft 证书服务器-CAOpenSSL 0.9.8前提 ...
  • 楼主和另一位同事在理想国际今晚值班做运维监控,晚上接到电话需要重启两台服务器,一台在朔黄大厦.一台在泰鹏大厦,因为都是公司内部的IDC机房,所以都没有配置管理卡,需要重启就得跑机房手动重启,幸好三栋大厦距离都不远   ...
  • 该 RDC 7.0 客户端更新包含以下新功能. web 单一登录 (SSO) 和 Web 窗体基于的身份验证 远程桌面 (RD) Web Access 现在使用基于窗体的身份验证来改善用户体验. web SSO 可确 ...
  • 原文:http://cormachogan.com/2014/03/18/vsan-and-vsphere-replication-interop/       花了大量时间研究VSAN 架构之后,我想花点时间研究下 ...
  • #include <stdio.h>#include <math.h>#define  TRUE  1#define  FALSE 0#define MAX_SIZE  1000#define ...