c# 3.0銳利體驗(一)

來源:互聯網
上載者:User
c# 3.0新特性
a) 隱含類型局部變數
b) 擴充方法
c) 對象與集合初始化器uju自動出示
d) 匿名型別
e) Lambda運算式
f) 查詢運算式(LINQ)
g) 運算式樹狀架構

a) 隱含類型局部變數
var i=5;
var h=23.45;
var s="C Sharp";
var intArr=new[]{1,2,3,4};
var a=new[]{1,10,100,1000};
1.var 為關鍵字,可理解為預留位置,可以根據後面的初始化推斷類型
2.初始化語句必須為運算式,且編譯時間可推斷類型
3.var聲明的僅限局部變數,亦可用於foreach,using等語句
4.數組也可以作為隱含類型。

Lambda運算式格式:
(參數列表)=>運算式或者語句塊

可以有多個參數,一個參數,或者無參數。
(x,y)=>x*y //多參數,隱式類型=>運算式
        x     =>x*10 //單參數,隱式類型=>運算式
       x      =>{return *10} //單參數,隱式類型=>語句塊
(int x)=>x*10 //單參數,顯示類型=>運算式
(int x)=>{return x*10} //單參數,顯式類型=>語句塊
  ()          =>Console.WriteLine() //無參數
 
Lambda運算式L可以被轉換為委託類型D,需要滿足以下條件:
L和D擁有相同的參數個數;
L的參數類型要與D的參數類型相同。注意隱式類型要參與類型辨析;
D的傳回型別與L相同,無論L是運算式,還是語句塊。

delegate int myDelegate(int n);
public class myClass
{
      public static void Process(myDelegate md);
}
myClass.Pross(x=>x*10);
以上代碼編譯器如何編譯?
myDelegate md = new myDelegate(XXX);
myClass.Process(md);
public static int XXX(int n)
{
      return x*10;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.