程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# 3.0 之 隱式類型變量 (Implicitly Typed Local Variables)

C# 3.0 之 隱式類型變量 (Implicitly Typed Local Variables)

編輯:.NET實例教程

隱式類型變量的使用

    C# 3.0中引入了隱式類型變量(Implicitly Typed Variables)。從我的觀點來看,它與object類型以及泛型有著相似的地方。它就是使用一個新的關鍵字var,來代替先前一般應用中的指定一個固定格式的變量類型(int、double、string等等)。看一個例子:

   // 顯式類型定義

   int myInt = 0;

   bool myBool = true;

   string myString = "Nocturne Studio.";

    如果采用var關鍵字來定義,則可以寫成如下的格式:

    // Implicitly typed variables.

    var myInt = 0;

    var myBool = true;

    var myString = "Nocturne Studio.";

    在這種情況下,編譯器可以推斷出myInt是System.Int32類型而myString是System.String類型,等等。使用GetType()方法可以獲取它實際的數據類型

  static void Main(string[] args)

  {

      // Implicitly typed variables.

      var myInt = 0;

      var myBool = true;

      var myString = "Nocturne Studio.";

 

      Console.WriteLine("The type of myInt is {0}", myInt.GetType().Name);

      Console.WriteLine("The type of myBool is {0}", myBool.GetType().Name);

      Console.WriteLine("The type of myString is {0}", myString.GetType().Name);

 

      Console.ReadLine();

  }

    輸出的結果為:

查看更多精彩圖片

    除此之外,還可以將數組、泛型以及類賦給var型變量,比如:

  var evenNumbers = new int[] { 2, 4, 6, 8 };

  var myDoubles = new List<double>();

    這裡的int型數組evenNumbers還可以執行foreach語句進行迭代

  foreach (var item in evenNumbers)

  {

      Console.WriteLine("Item value in evenNumbers: {0}", item);

  }

    foreach裡的item也可以用強類型int來指定,即寫成

  foreach (int item in evenNumbers)

  {

      Console.WriteLine("Item value in evenNumbers: {0}", item);

  }

 

隱式類型變量的一些限制

 

    使用var關鍵字的時候還有些限制。首先,這種類型僅可以應用於方法或屬性內部的局部變量,而不能用在字段、函數返回值和參數中。例如,下面的兩個用法都是非法的:

   class ErrorExamples>

   {

       // var 不能用在字段中

       private var myInt = 10;

 

       // var 不能用在返回值或參數的類型上

       public var MyMethod(var x, var y) { }

   }

    VS2008的編輯器都不會將var標藍,用以提醒程序員。 另外,用var關鍵字聲明的局部變量必須在聲明的同時賦值,並且不能被賦予null。比如下面的做法都是錯誤的:

    // 錯誤,必須賦以初值

    var myData;

 

    // 錯誤,必須在聲明的同時賦值

    var myInt;

    myInt = 0;

 

    // 錯誤,初值不能賦以null

    var myObj = null;

 

    // 正確,在賦初值之後再指向null

    var myDoubles = new List<double>();

    myDoubles = null;

 

    // 正確,用已有的變量來賦初值

    var myInt = 0;

var myAnotherInt = myInt;

 

隱式類型數組

 

    與局部變量相同地,可以定義隱式類型數組。演示如下:

    // 實際上是int[]

    var arrayA = new[] { 1, 2, 3, 4 };

 

    // 實際上是double[]

    var arrayB = new[] { 1, 0.5, 3.14, 2.71828 };

 

    // 實際上是string[]

    var arrayC = new[] { "Nocturne", null, "Studio", "SpadeQ" };

 

    // 錯誤,不允許混合類型

    var arrayD = new[] { 1, "one", 2, "two" };

 

==============================8<------------------------------------------

 

    目前看來,我還不是很清楚這項技術的具體應用,濫用這項技術肯定會對代碼的可讀性造成破壞。後面我會進一步去了解LINQ的相關資料,應該能夠找到答案。 敬請期待 :-)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved