在.NET 3.0后微软引入了隐式类型var,编译器可以自动判断变量的类型,通过var这个隐式类型,可以提高开发人员的开发效率,很多时候可以不考虑对象的类型,编译器会自动帮我们判断

使用隐式类型和使用其他显式类型的效果是一样的,只是在编译的过程IDE自动判断类型,所以很多时候我们不用考虑变量的具体类型

 class Program{static void Main(string[] args){var str = "aaa";var i = 15;var obj = new { Name = "10", Age = 15 };str.ToString();i.ToString();}}

编译完,IDE会自动的把var换成string,int,而第三个,在编译的时候会自动生成一个匿名的类,obj是一个类的对象,可以通过Reflector反编译工具查看到

在使用隐式类型var的时候,需要遵循几个规则

  1)var类型的值必须是局部变量或静态变量

  2)var变量在声明之前必须被初始化

  3)变量的值不能为null(这样编译器就不能判断类型了)

  4)var变量不能为一个方法或方法组

  5)不能用来声明参数类型

class Program{int num = 15;static void Main(string[] args){string str;//不能使用为初始化的变量//var s = str;//不能引用字段,只能是局部变量或静态变量//var n = num;//var变量值不能为null//var s = null;//不能用函数返回值赋值//var s = Add(10, 15);
        }//不能用作方法参数类型//public int Add(var a, var b)public int Add(int a, int b){return a + b;}}

转载于:https://www.cnblogs.com/BrokenIce/p/5788336.html

【C#】隐式类型var相关推荐

  1. Linq原理相关(隐式类型var、匿名类型、实例化类、集合初始化)

    1. var(隐式类型) 例如: var temp ="abc";  //正确, var temp; temp = "abc"      //错误 原因:隐式类 ...

  2. 委托 匿名类 var隐式类型 匿名方法

    委托 委托是一个类  它定义了方法的类型  实现了讲一个方法当做另一个方法的参数来传递 (委托的一个有趣且有用的属性是,他不知道也不关心所引用的方法的类 只关心引用的方法是否具有与委托相同的参数和返回 ...

  3. Linq之隐式类型、自动属性、初始化器、匿名类

    目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍 ...

  4. c# 无法将类型隐式转换_C#中的隐式类型数组

    c# 无法将类型隐式转换 C#隐式类型数组 (C# Implicitly Typed Arrays) Like implicitly typed variables, we can also decl ...

  5. C#隐式类型和显示类型

    一,在程序中我们经常会遇到:无法将类型"XXX"隐式装换为"XXX",如下例子: static void Main(string[] args){int i;i ...

  6. 编写高质量代码的50条黄金守则-Day 01(首选隐式类型转换)

    该文章由本人原创发布,最新版本现已迁移至:编写高质量代码的50条黄金守则-Day 01(首选隐式类型转换) | .Net中文网. 编写高质量代码的50条黄金守则-Day 01(首选隐式类型转换),本文 ...

  7. javascript深入浅出——学习笔记(六种数据类型和隐式转换)

    在慕课之前学过JS深入浅出,最近发现很多东西都记不太清楚了,再复习一遍好了,感觉这个课程真的超级棒的,做做笔记,再添加一些学习内容?随时补充 课程大纲 1.数据类型 2.表达式和运算符 3.语句 4. ...

  8. js中的隐式类型转换有哪些

    目录 一.隐式类型转换条件有哪些 二.== 的隐式类型转换 三.+ 的隐式类型转换 四.object 的隐式类型转换 1.探讨 object 的隐式转换执行顺序 2.探讨 Symbol.toPrimi ...

  9. 显示类型转换和隐式类型转换

    显示类型转换 1.Number():函数把对象的值转换为数字,如果对象的值无法转换为数字,那么 Number() 函数返回 NaN. var a = 'true';console.log(typeof ...

最新文章

  1. 面对互联网一线大厂,这些技术你需要了解!
  2. HTTPS访问站点,出现证书问题解决
  3. KZWFoudation系列之Router的设计
  4. markdown中快速插入Emoji表情包语法速查表!!!
  5. 1035. 插入与归并(25)-浙大PAT乙级真题
  6. 【免费毕设】asp.net电子书城系统设计与实现(源代码+lunwen)
  7. 重温html5的新增的标签和废除的标签
  8. arnold官方帮助文档_Python用不好英语水平不够?这里有官方中文文档你看不看
  9. centos7.x-firewalld防火墙常用命令收集
  10. iOS UISearchBar 在界面跳转时出现灰色背景问题
  11. 利用console.time优化js代码
  12. 查看服务器sftp用户信息,linux查看sftp服务器配置
  13. dcm文件如何转化为jpg或者bmp文件
  14. 声音均衡器怎么调好听_完美音效就靠它了!最详细均衡器调整方法
  15. 如何轻松搞定内网摄像头远程运维?EasyNTS上云网关简单三步实现设备公网远程控制、远程配置
  16. 阿里巴巴天猫总裁蒋凡被认定为杭州高层次人才
  17. ·VBOX虚拟机安装
  18. 浅谈大型互联网的企业入/侵及防护策略
  19. .netcore的mysql链接字符串ConnectionString到底应该怎么设置
  20. 3d建模网上学习靠谱吗?学3d建模哪个大学好?

热门文章

  1. Linux基础之常见命令用法(一)
  2. 157. [USACO Nov07] 奶牛跨栏
  3. Zabbix二次开发_03api列表
  4. C#控件及常用属性整理
  5. java类型提升_java表达式中类型的自动提升(转)
  6. 昆仑通态9针通讯口定义_昆仑通态触摸屏与常见PLC的连接方法(3)——OmronHostLink...
  7. esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试
  8. JSP之内置对象、作用域
  9. Unity Shader之入门-helloworld
  10. devops工作流程_DevOps会偷我的工作吗?