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 中简化表达式的方法 ...
一周排行