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 中简化表达式的方法 ...
一周排行
  • using System; using System.Linq; using System.Collections.Generic; using System.ComponentModel; using System ...
  • package main import ( "fmt" "bufio" "io" "os" "strconv" &q ...
  • Python列表函数和方法python列表中主要有以下函数:cmp(list1,list2)    比较两个列表的元素len(list)           列表元素的个数max(list)           返回 ...
  •     不知不觉 , 做程序工作已经 10 年了 , 从最初学习 C++ 到 Java, 从困惑到清晰 , 感觉真的有不少东西可写 , 不过总觉得不成体系,大概看了太多八股文章的缘故,被憋得实在难受.所以不管了,想到 ...
  • 期盼的寒假从今天就要开始了(其实自己并没有感觉到自己有一点儿高兴,只是因为学校的生活太格式化了).昨天自己考完大三上学期的最后一门课-<编译原理>.对于这门课来说,自己在学习的过程中,并没有收获太多的知识 ...
  • 格子箱被评选为12家最值得注意的亚洲初创科技公司之一
    在不久前举行的亚洲科技创业周上,有不少亚洲初创公司引起了人们的注意.这些公司来自印度,中国 ...
  • RHEL6入门系列之二十五,利用yum进行软件管理
    一. Linux系统中安装软件的三种方法在Linux系统中安装软件有三种方法:源代码安装. ...
  • 学习时间 新增代码行 博客量(篇) 博客量(篇) 第一周 5小时(课上4小时 课下1小时) 0(第一周还未正式写代码) 2 初步的了解了软件工程这门课,以及明确了解下来的学习方法,周更博客,与老师以及助教老师的互动, ...
  • 关于我——记百度用户体验部年会节目我
    关于“我”,你知道什么 ?我的快乐我的理想我的来头 我的过程……“我”来自百度用户体验部. ...
  • 老是记不住java环境变量怎么设置,放在这里记载一下.(1) 新建->变量名:JAVA_HOME 变量值:E:\Program Files (x86)\Java\jdk1.6.0_27(这只是我的JDK安装路径 ...