C# 3.0新特性系列:隐含类型var

C# 3.0新特性系列:隐含类型var

 
一.神奇的var

  在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。

  1. 相同点,它可以用var来声明任何类型的局部变量。

  2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。

  
二.相同点

  它可以声明

var integer = 10;
var name = “edisundong”;
var numbers = new int[] { 1, 2, 3 };

  
三.不同点

  var仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于

int integer = 10;
string name = ” edisundong “;
int[] numbers = new int[] { 1, 2, 3 };

  三.注意点

  1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,如果有下面的语句:

var integer;
integer = 10;

  编译时会报Implicitly typed locals must be initialized错误。

  2.在使用var声明一个局部变量后,它仍然具有强类型,可以做如下测试:

var integer = 10;
integer = ” edisundong “;

  编译时会报Cannot implicitly convert type ‘string’ to ‘int’错误。

  3. 初始化器表达式的编译期类型不可以是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:

var integer = null;

  编译时会报Cannot assign ‘<null>’ to an implicitly typed local错误。

  4. 初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。

  如可以这样去声明:

var coll = new Hashtable();

  5. var的声明仅限于局部变量,也可以包含在foreach、for、using语句中。下面的使用是错误的:

class Program
{
 private var i = 10; //全局私有变量。
 static void Main(string[] args)
 { }
}

  编译时会报The contextual keyword ‘var’ may only appear within a local variable declaration错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111081.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通俗易懂教你画类图

    通俗易懂教你画类图1.类图1.1类的内容第一层:类的名称,如果是抽象类,则就用斜体显示。第二层:字段和属性。第三层:方法。前面的符号:“+”表示public;”-“表示private;”#”表示protected。1.2类与类之间的关系1.2.1继承关系:空心三角形+实线鸟也有生命这种属性,也有新陈代谢和繁殖的行为。1.2.2实现关系:空心三角形+虚线大雁可以各种各样的飞翔方式。1.2.3关联关系:实线箭头企鹅需要知道气候的变化,需要了解气候规律。1.2.

    2022年7月12日
    25
  • ubuntu 下 apache+tomcat整合_(mod-jk方法)

    ubuntu 下 apache+tomcat整合_(mod-jk方法)

    2021年8月2日
    62
  • C++ sort排序函数用法

    C++ sort排序函数用法最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数用法1、sort函数可以三个参数也可以两个参数,必须的头文件#include和usingnamespacestd;2、它使用的排序方法是类似于快排的方法,时间复

    2022年6月11日
    35
  • opc服务器不显示目录,opc客户端搜不到opc服务器

    opc服务器不显示目录,opc客户端搜不到opc服务器opc客户端搜不到opc服务器内容精选换一换ELB可以针对客户访问的业务为访问者提供个性化的管理策略,制定策略之前需要获取来访者的真实IP。TOA内核模块主要用来获取ELB转化过的访问者真实IP地址(仅支持IPv4),该插件安装在ELB后端服务器。本文档仅适用于四层(TCP协议)服务,当客户需要在操作系统中编译TOA内核模块时,可参考本文档进行配置。Linux内核版本为2.6.32块存储调优主要…

    2022年6月20日
    35
  • sdn小结(一)_SDN的基本概念

    sdn小结(一)_SDN的基本概念看了一周的sdn,写下一点总结和心得体会。1.sdn中不一定非得用openflow来作为南向协议,其他的南向接口协议还有很多,比如pcep,netconf,snmp,bgp-ls2.segmentrouting也需要一个集中的控制器,只要硬件条件支持,sr可以和sdn进行结合3.ECMP通过对流的数据包头部进行哈希取模运算,将数据流映射到不同的转发路径4.谷歌的B4采取的是i…

    2025年9月24日
    7
  • python中替换字符串中字符_python替换字符串中的某个字符

    python中替换字符串中字符_python替换字符串中的某个字符python_split_strip_replace使用方法使用python时会经常要对字符串做一些处理,比如:分割字符串、去掉空格、替换字符串中的某个字符等,下面介绍下这几个功能的使用。一、Split()作用:将字符串分割成为列表,不改变字符串原始值这里以x为分割符,将a分成了含有三个元素的列表并输出。但不…文章科技小先锋2017-11-15911浏览量正则表达式简介…

    2022年6月7日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号