zoukankan      html  css  js  c++  java
  • .net framework中引进的var对象类型声明

    安装了vs 2008之后,在后台代码中,resharper插件对后台所有局部变量进行提示建议,显示需要采用"use implicitly typed local variable declaration",通过代码修改建议,发现有"use Var"的提示,通过字面含义,很快就能知道这是.net framework3.5中引进的新机制,即对局部变量进行自动类型设置,其类型取决于等号右边初始化的对象的类型。在网上查了一下相关解释,记录在此:

      一.神奇的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错误。

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/bobo41/p/2975951.html
Copyright © 2011-2022 走看看