Time of Update: 2017-02-27
我們說Anonymous Type是C# 3.0的新的特性,而沒有說Anonymous Type 是.NET Framework 3.5的新特性。這是因為Anonymous Type僅僅是.NET Programming Language和相應的Compiler的新引入的特徵。而對於.NET Framework 3.5來說,它看不到這和原來有什麼不同,對於Anonymous Type和一 般的Named Type,對於CLR來說他們之間沒有什麼本質的區別。通過下面這樣的一段簡單的代碼:1var
Time of Update: 2017-02-27
我們說在C#3.0中,引入了一些列新的特性,但是個人認為Extension Method 這個特性是最爽的,最有創新的。它真正的解決了:在保持現有Type原封不動的情況下對其進行擴充,你可以 在對Type的定義不做任何變動的情況下,為之添加所需的方法成員。下面我就來 講講。C#3.X出來之前大家都知道javascript有個特新Prototype,它就如同C#3.X中的Extension Method。這裡不多將了。我們主要看看.NET的實現。在C#3.X出來之前我們可以做到對Type進行擴充。
Time of Update: 2017-02-27
對象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers) ,就是簡化我們的代碼,讓本來幾行才能寫完的代碼一行寫完。 這樣在LINQ的使用中,我們才不會把一個LINQ運算式寫的複雜。Object InitializersObject Initializer的使用很簡單:在通過new 關鍵字建立對象的時候,將 所需的Proeprty置於Type name後的{}中。比如:1class staff2 {3 public
Time of Update: 2017-02-27
C#的對象系統是個單根系統,不支援類的多繼承,只支援多介面實現,這在 某種程度帶來了一些不便:我們在系統設計時經常會抽象出一些介面,並為介面 提供一個抽象類別作為預設的實現,然後實際使用的類可以從抽象類別派生。如果一 個類實現了多介面,那我們只能選擇一個抽象類別作為祖先類,再將其他介面的實 現手工加到類中。這種情況在C#3.0中有了變化,我們現在可以利用C#3.0的擴充方法來實現一
Time of Update: 2017-02-27
在C#3.0中,一個對象建立運算式可以包含一個對象或集合初始化器,用於初 始化新建立的對象的成員或新建立的集合的元素。對象建立運算式:new type (argument-list(可選)) 對象或集合初試化器(可選)new type 對象或集合初試化器一個對象建立運算式可以省略構造器參數列表,並將其連同圓括弧一起替換 為一個對象或集合初始化器。省略構造器參數列表並將其連同圓括弧一起替換為
Time of Update: 2017-02-27
20.2.1 引入匿名變數在很多情況下,我們需要一種能夠臨時將一批具有一定關聯的資料存放起來 的對象;或者在某些情況下,我們對僅一個對象的“形狀”(如屬性的名字和類 型等)比較感興趣。例如Book類,當它和其他商品放在一起進行查詢時,我們可 能僅對其名稱和價格感興趣,並且希望將這兩種屬性放在另外一個單獨的臨時對 象中以備今後使用。這時,我們關注的僅僅是這個臨時對象具有Name和Price的 屬性感興趣,至於它究竟是什麼類型就無關緊要了。然而,為了使這樣一個對象 得以存在,
Time of Update: 2017-02-27
20.1 隱式類型在C#3.0中增加了一個變數聲明var,這個聲明和JavaScript 的var類似,但 也有不同。相同之處是它可以用var來聲明任何類型的局部變數;而不同之處在 於它僅僅負責告訴編譯器,該變數需要根據初始設定式來推斷變數的類型,而 且只能是局部變數。20.1.1 隱式類型局部變數的聲明與使用在C# 3.0中,引進了一個新的關鍵字叫做var。var允許你聲明一個新變數, 它的類型是從用來初始化器變數的運算式裡隱式的推斷出來的,即在聲明時,你
Time of Update: 2017-02-27
今天看了csdn上的一段視頻講解c#3.0的,雖然主講人有點口吃但我還是堅持 聽完了。裡面有一句話我引起了我的興趣,如果在結構上相同我們就可以對一個 匿名型別進行強轉。看來在關鍵時刻我們還是可以直接操作匿名型別的雖然有點 麻煩。我們知道匿名型別實際上就是.net自動產生的一個泛型類,並且只要欄位名 相同類型相同就會使用同一個匿名型別。所以我們只要類用這個特性就可以把一 個通過參數傳遞的匿名型別進行強轉了。public T CastAnonymous<T>(object
Time of Update: 2017-02-27
作業系統:Windows XP SP3開發工具:Visual Studio 2008語言:C# 3.0.net Framework:3.5在程式中經常需要將指定的資訊(包括異常資訊和正常處理資訊)寫到日誌中。在C#3.0中可以使用EventLog類將各種資訊直接寫入Windows日誌。EventLog類在System.Diagnostics命名空間中。我們可以在“管理工具” > "事件檢視器“中可以查看我們寫入的Windows日誌,如下圖所示:
Time of Update: 2017-02-27
寫在前邊:不知道怎麼的,上一篇說放到首頁看看,今天來看才發現沒有放上去,做事情還真不細心,改、改、改!其實,早知道C# 4.0都有了,但是連C# 3.0都還沒有弄清楚,使用還是堅持這個系列,做完再寫C# 4.0吧。技術前輩們肯定早都知道這些東西了,不過呢,我也只是學習,只是把我的學習同大家分享而已!一、自動實作屬性全稱應該叫自動實作屬性(Auto-implemented
Time of Update: 2017-02-27
寫在前邊:用了aspdotnet一段時間了,對csharp還知之甚少,今天就從csharp的基本文法開始學習。內容多為前輩同仁們blog中已寫過,加上自己得理解,只求能加深自己的印象,若能在cnblog中湊個數,那真是受寵若驚!一.C# 3.0語言主要增強點• 隱含類型局部變數• 擴充方法• 對象與集合初始化器• 匿名型別• Lambda運算式• 查詢運算式( LINQ )•
Time of Update: 2017-02-27
C#3.0引進新關鍵字var,它是一個類型,可以用來聲明局部變數。Codevar I = 1; //int類型var j = ”reallypride”; //string類型var k = new[] { 1, 2, 3, 4 }; //int[]類型var x; //錯誤,必須初始化var y = null;
Time of Update: 2017-02-27
C#3.0這個特性是對隱式類型化本地變數的擴充,有了這個特性,將使我們建立數組的工作變得簡單。我們可以直接使用"new[]"關鍵字來聲明數組,後面跟上數組的初始值列表。在這裡,我們並沒有直接指定數組的類型,數組的類型是由初始化列表推斷出來的。class AnonymousTypeArray : AppRunner.AbstractApplication{public override void Run(){var intArray = new[] { 1, 2, 3, 4,
Time of Update: 2017-02-27
C#3.0中定義屬性更加方便,不用再在像之前的版本那樣的繁瑣,需要先定義儲存資料的欄位,然後再定義屬性器,現在只需要定義屬性器就可以了,其它的有編譯器自動為我們完成,就可以省去定義欄位時需要的那些時間;在對象初始化的時候我們可在物件建構的時候實現對象屬性的初始化工作,和集合初始化類似。1.匿名屬性定義屬性如下:public class Employee{public int Id { get; set; }public
Time of Update: 2017-02-27
話題從今天TerryLee關於MVC的一段代碼說起:protected void Application_Start(){ RouteTable.Routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home",
Time of Update: 2017-02-27
從這篇blog開始真正開始關心3.0裡面的特性,本篇主要介紹下Var關鍵字與 擴充方法。初識var關鍵字C#3.0中為我們提供了var關鍵字來定 義隱式化的局部變數,定義方式:var i = 0;var myBool = true;var myString = "Henllyee";其實在使用var關鍵字時,編譯器會根據 初始設定變數的變數值來推斷變數的資料類型,我們可以通過IL來看下上面幾句代 碼在編譯之後的表示:.locals init ([0] int32 i,[1
Time of Update: 2017-02-27
在上篇blog中簡單地介紹了委託的基礎知識,在這片文章中會介紹下委託跟 事件之間的聯絡。事件的由來我們可以看到在使用委託進行回調 的實現的時候,我們往往需要再定義一個委派物件,以及一個對外公開的輔助方 法來添加委託的方法,這樣子會使我們感覺比較繁瑣。C#提供了event關鍵字來 減輕直接使用委託的負擔,編譯器會自動提供註冊、取消註冊的方法和委託必要 的成員。首先來看看定義事件的步驟:1.先定義委託類型;2.通 過event關鍵字定委託類型的事件。public delegate int
Time of Update: 2017-02-27
在學習C#3.0之前還是先來回顧下委託、事件,因為這樣能更加有助於理解 C#3.0裡面的一些新的特性,如Lambada運算式等。背景在C語言 中我們可以用函數指標來建立回呼函數,但是在C裡面回呼函數存在一些安全問 題。因為它只是在記憶體位址中記錄了下來,並沒有像方法的參數類型、參數個數 、傳回值等其他安全資訊。而在.Net FrameWork中,回調仍然是可以的,.net framework中提供了更為進階的更為安全的物件導向的delegate來實現。定義委託在委託中主要包含了三個重要的資訊:1
Time of Update: 2017-02-27
前言:學習除了要堅持不懈,還需要有好的方法!總結整理自己學習 的資料能使得所學的內容條理清晰,尋找回顧也很方便!俗話說的好:“ 好記性不如爛筆頭”;以前很多知識都是看過後,過一段時間就忘記,時 間花下去了,但效果甚微;看的多,但雜而不精;這些都是沒有做筆記,沒有深 入學習而導致的時間與精力的浪費,因此每個研究課題,都要好好整理資料,做 一個系列的研究!三.擴充方法 (續接上一編)擴充方法定義如 下:public static class
Time of Update: 2017-02-27
前言C#3.0是一門物件導向的程式設計語言,具有多用途和型別安全等特 征。為實現開發和學習的高效性,她在語言的簡單,易表達,以及可程式化性上做 了很大努力。使得新人能夠很快入門,開發人員能夠快速開發出程式。但這些並不 是損害語言的功能為前提的。本文one Section C#的面向對 象性(Object Orientation)C#同JAVA一樣是物件導向的語言,具有封裝 (encapsulation),多態(polymorphism),繼承(polymorphism)的特性。但是她