真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#3.0中Lambda表達(dá)式如何使用

這篇文章給大家介紹C#3.0中Lambda表達(dá)式如何使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

我們注重客戶提出的每個要求,我們充分考慮每一個細(xì)節(jié),我們積極的做好網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),小程序制作,網(wǎng)站開發(fā),技術(shù)開發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。

Lambda表達(dá)式

Lambda 表達(dá)式是一個匿名函數(shù),它可以包含表達(dá)式和語句,并且可用于創(chuàng)建委托或表達(dá)式目錄樹類型。所有 Lambda 表達(dá)式都使用 Lambda 運(yùn)算符 =>。關(guān)于Lambda更詳細(xì)的講解大家可以參看 MSDN。里面說的很清楚。

這里簡單舉個例子來說明Lambda的好處。Lambda在對匿名委托的處理上提供了更清楚的實(shí)施方式。例如在2.0中。我們可以寫這樣的代碼:

Code  public class Example  {     public static void Demo(System.Windows.Controls.TextBlock outputBlock)     {        Func convert = delegate(string s)           { return s.ToUpper(); };         string name = "Dakota";        outputBlock.Text += convert(name) + "\n";     }  }

在 C# 中將 Func<(Of <(T, TResult>)>) 委托與匿名方法一起使用。

在3.0中,我們可以使用Lambda來更清楚的進(jìn)行參數(shù)的傳遞:

Code  public class Example  {     public static void Demo(System.Windows.Controls.TextBlock outputBlock)     {        Func convert = s => s.ToUpper();         string name = "Dakota";        outputBlock.Text += convert(name) + "\n";     }  }

Lambda 表達(dá)式的基礎(chǔ)類型是泛型 Func 委托之一。這樣能以參數(shù)形式傳遞 lambda 表達(dá)式,而不用顯式將其分配給委托。尤其是,因?yàn)?System.Linq 命名空間中許多類型方法具有 Func<(Of <(T, TResult>)>) 參數(shù),因此可以給這些方法傳遞 lambda 表達(dá)式,而不用顯式實(shí)例化 Func<(Of <(T, TResult>)>) 委托。這樣可以使我們的代碼更加簡潔,邏輯上更易于理解。

對象的初始化

在C#中,對象的初始化也做了一些改進(jìn)。一個新的功能就是提供了更方便的語法規(guī)則來聲明變量的值。

假如我們聲明一個Student對象:

Code  public class Student  {      private string _stuName;      private string _stuAge;      private int _stuClass;       public Student() { }       public string StuName      {          get { return _stuName; }          set { _stuName = value; }      }       public string StuAge      {          get { return _stuAge; }          set { _stuAge = value; }      }       public int StuClass      {          get { return _stuClass; }          set { _stuClass = value; }      }   }

在C#2.0中,我們是這樣聲明變量并賦值的:

Student stu = new Student();          stu.StuName = "Brian";          stu.StuAge = "21";          stu.StuClass = "1班";

而在C#3.0中,我們可以這樣初始化對象:

Student stu2 = new Student           {              StuName = "Brian",              StuAge = "21",              StuClass = "1班"         };

從代碼中不難看出,C#3.0給我們提供了很方便得方式來進(jìn)行對象的初始化工作。

查詢

這個想必大家都應(yīng)該有所耳聞,那就是鼎鼎大名的Linq。這是C#3.0中最獨(dú)特好用的新特性之一。Linq改變了我們寫數(shù)據(jù)應(yīng)用程序的方式,先前,開發(fā)人員需要考慮并編寫不用的代碼來處理不同數(shù)據(jù)源中的數(shù)據(jù)(SQL Server ,XML ,Memory....)。LINQ很好的幫我們解決了這個煩人的問題。同時借助Lambda,我們可以更方便準(zhǔn)確的查詢我們想要的數(shù)據(jù)。

使用Linq簡單的數(shù)據(jù)查詢例子:

Code  private void BindGridView(string criteria)      {          string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;          NorthwindDb db = new NorthwindDb(strConn);           IEnumerable results;           if (criteria == string.Empty)          {              results=db.Employee.ToArray();          }          else          {              results = (from c in db.Employee                            where c.FirstName.Contains(criteria)                            select c).ToArray();                        }          GridView1.DataSource = results;          GridView1.DataBind();      }

變量聲明

這里要說的是var。var是C#3.0中提供的用于聲明變量的關(guān)鍵字,開發(fā)人員可以不考慮變量的類型就可以對變量進(jìn)行聲明(這一點(diǎn)用法非常類似Javascript)。但是兩者還是有些差異。

相同點(diǎn):用var來聲明任何類型的局部變量。

不同點(diǎn):它僅僅負(fù)責(zé)告訴編譯器,該變量需要根據(jù)初始化表達(dá)式來推斷變量的類型,而且只能是局部變量。

我們可以這樣聲明變量:

var i= 10;   var name = "edisundong";   var numbers = new int[] { 1, 2, 3 };

var僅僅是個關(guān)鍵字,它并不是C#3.0中的一種新的類型,而是負(fù)責(zé)告訴編譯器,該變量需要根據(jù)初始化表達(dá)式來推斷變量的類型,上面的語句相當(dāng)于

int i= 10;   string name = " edisundong ";   int[] numbers = new int[] { 1, 2, 3 };


這里還需要注意幾點(diǎn):

1.在聲明時必須同時賦值。

2.在使用var聲明一個局部變量后,他仍然具備強(qiáng)類型。

var integer = 10;   integer = " edisundong ";

編譯時會報Cannot implicitly convert type string to int錯誤。

3. 初始化器表達(dá)式的編譯期類型不能夠是空(null)類型。

4. var的聲明僅限于局部變量

擴(kuò)展方法

以前如果我們想擴(kuò)展一個類的功能必須直接源自于它并且從學(xué)其中的方法,在C#3.0中,介紹了一種很快捷的擴(kuò)展功能的方法。

Code  public static class StudentExtensionMethods      {          public StudentExtensionMethods()          {              //              //TODO: 在此處添加構(gòu)造函數(shù)邏輯              //          }          public static string GetStudentInformation(this Student stu)          {              return string.Format("Name: {0} {1} Age: {2}", stu.StuName,              stu.StuAge, stu.StuClass);          }      }

定義一個類,其中定義一個方法,注意:這個類和方法都是static的,并且方法的參數(shù)是類Student。這樣,Student類就可以擴(kuò)展GetStudentInformation方法:

Code  Student stu2 = new Student              {                  StuName = "Brian",                  StuAge = "12",                  StuClass = "1班"             };              Console.WriteLine(stu2.GetPersonInformation());

關(guān)于C#3.0中Lambda表達(dá)式如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享文章:C#3.0中Lambda表達(dá)式如何使用
分享URL:http://weahome.cn/article/ijgggj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部