程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#3.0新特性(一)-隱式類型的局部變量和數組

C#3.0新特性(一)-隱式類型的局部變量和數組

編輯:關於C#

寫在前邊:

用了aspdotnet一段時間了,對csharp還知之甚少,今天就從csharp的基本語法開始學習。內容多為前輩同仁們blog中已寫過,加上自己得理解,只求能加深自己的印象,若能在cnblog中湊個數,那真是受寵若驚!

一.C# 3.0語言主要增強點

• 隱含類型局部變量

• 擴展方法

• 對象與集合初始化器

• 匿名類型

• Lambda表達式

• 查詢表達式( LINQ )

• 表達式樹

二.隱式類型的局部變量和數組

先來看看例句:

var i = 5;
var h = 23.56;
var s = "C Sharp";
var intArr = new[] { 1, 2, 3, 4 };
var a = new[] { 1, 10, 100, 1000 };
var str = new[] { "hello", null, "qun" };
var jcarr = new[]
{
new[] {1, 2, 3, 4},
new[] {5, 6, 7, 8}
};
var jcstr = new[]
{
new[] {"hello", "qun", "er", "wo"},
new[] {"xiang" , "ni", "le"}
};
var noname = new { name = "yaoyao", age = 24 };//匿名類型
var vlist = new List<int>();

注:"var"這個關鍵字是不是很眼熟,javascript中經常用到(互相學習現在比較常見了),當然C#中var和javascript的var差別還是比較大。

1.var只能作為局部變量使用;

就是說var只能定義在一個方法裡面,或者foreach,for,using等語句裡面:

public class VarTest
{
private void test()
{
var i = 0;
}
}

var關鍵字可以在以下四種場合中使用:

•局部變量:

var i = 5;

•在for初始化語句中:

for (var i = 0; i < 10;i++ )

•在foreach初始化語句中下邊將有例子;

•在using語句中:

using (var file = new StreamReader("C:\\myfile.txt"))

2.var可以申明任何類型變量,可以根據後面的初始化語句自動推斷類型;

這個和object有點像,但var是強類型,根據初始化表達式來定義變量的類型;

var i=0; i 是int類型
var str = "test"; str是string類型

編譯器自動推斷用var定義的變量的類型,即是,在vs2008中,將鼠標移動到var i=0; 這句上的var關鍵字上,vs2008會智能提示為struct System.Int32,而且,如下的定義賦值語句完全正確:

int value = i;

其它的情況,編譯器也類似的自動推斷變量的類型。

3.var定義時,必須使用表達式初始化;

也就是必須定義成 var i=0; 沒有初始化編譯會報錯,而且初始化值不能為null,編譯器無法根據null來推斷出局部變量的類型;初始值除了int,string等數據類型外,還可以使用new 一個對象作為初始值(從網上大家發表的看法,var使用最多的就是配合一個匿名類型的對象來使用,以及在Linq中使用)

配合匿名類型使用:

var a = new { Name = "maotin", Age = 99 };
Console.WriteLine(a.Name);
Console.WriteLine(a.Age);

在linq中應用:

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums =
from num in numbers
where num < 5
select num;
var expr = from c in cusomers where c.City == "beijing" select c;
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}

4.var和匿名類型:

string[] words = { "aPPLE", "biuEb", "cHeRry" };
var upperLowerWords =
from w in words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };
foreach (var word in upperLowerWords)
{
Console.WriteLine("Uppercase:{0},Lowercase:{1}", word.Upper, word.Lower);
}

注:

很多時候var是可以省略的;

但是在使用匿名類型初始化變量時,必須使用它;

由於只有編譯器知道匿名類型的名稱,因此必須在源代碼中使用它;

如果已經使用了var初始化了查詢變量,則還必須使用var作為對查詢變量進行循環訪問的foreach語句中迭代變量的類型。

5.var使用建議

一般var不要像“var i=9;”這樣使用,程序可讀性不高;在匿名類型中使用比較方便;foreach中使用也不錯;var只是語言層面的東西,編譯器會在編譯的時候通過類型推斷把它換成真正的類型。

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