C#3.0教程:自動屬性和擴充方法

使用自動屬性後,你可以不用手工聲明一個私人成員變數以及編寫get/set邏輯,取而代之的是,編譯器會自動為你產生一個私人變數和預設的get/set 操作。系統為你產生的私人變數在IDE中,你是看不到的,如下圖:當然如果你希望屬性中有些賦值或者取值邏輯校正,自動屬性可是不適合你的。上面的代碼我們編譯後,再用 Reflector 反編譯後,我們可以看到上述代碼中的屬性變成了如下代碼:這個編譯器給我們產生的私人變數,顯然不是那麼容易重名的。

c#3.0系列:Extension Method

我們說在C#3.0中,引入了一些列新的特性,但是個人認為Extension Method 這個特性是最爽的,最有創新的。它真正的解決了:在保持現有Type原封不動的情況下對其進行擴充,你可以 在對Type的定義不做任何變動的情況下,為之添加所需的方法成員。下面我就來 講講。C#3.X出來之前大家都知道javascript有個特新Prototype,它就如同C#3.X中的Extension Method。這裡不多將了。我們主要看看.NET的實現。在C#3.X出來之前我們可以做到對Type進行擴充。

C#3.0中的“多重繼承”

C#的對象系統是個單根系統,不支援類的多繼承,只支援多介面實現,這在 某種程度帶來了一些不便:我們在系統設計時經常會抽象出一些介面,並為介面 提供一個抽象類別作為預設的實現,然後實際使用的類可以從抽象類別派生。如果一 個類實現了多介面,那我們只能選擇一個抽象類別作為祖先類,再將其他介面的實 現手工加到類中。這種情況在C#3.0中有了變化,我們現在可以利用C#3.0的擴充方法來實現一

C#3.0語言新特性之對象和集合初始化器

在C#3.0中,一個對象建立運算式可以包含一個對象或集合初始化器,用於初 始化新建立的對象的成員或新建立的集合的元素。對象建立運算式:new type (argument-list(可選)) 對象或集合初試化器(可選)new type 對象或集合初試化器一個對象建立運算式可以省略構造器參數列表,並將其連同圓括弧一起替換 為一個對象或集合初始化器。省略構造器參數列表並將其連同圓括弧一起替換為

C#3.0語言新特性之匿名變數

20.2.1 引入匿名變數在很多情況下,我們需要一種能夠臨時將一批具有一定關聯的資料存放起來 的對象;或者在某些情況下,我們對僅一個對象的“形狀”(如屬性的名字和類 型等)比較感興趣。例如Book類,當它和其他商品放在一起進行查詢時,我們可 能僅對其名稱和價格感興趣,並且希望將這兩種屬性放在另外一個單獨的臨時對 象中以備今後使用。這時,我們關注的僅僅是這個臨時對象具有Name和Price的 屬性感興趣,至於它究竟是什麼類型就無關緊要了。然而,為了使這樣一個對象 得以存在,

C#3.0語言新特性之隱式類型

20.1 隱式類型在C#3.0中增加了一個變數聲明var,這個聲明和JavaScript 的var類似,但 也有不同。相同之處是它可以用var來聲明任何類型的局部變數;而不同之處在 於它僅僅負責告訴編譯器,該變數需要根據初始設定式來推斷變數的類型,而 且只能是局部變數。20.1.1 隱式類型局部變數的聲明與使用在C# 3.0中,引進了一個新的關鍵字叫做var。var允許你聲明一個新變數, 它的類型是從用來初始化器變數的運算式裡隱式的推斷出來的,即在聲明時,你

c#3.0:使用傳遞出來的匿名型別

今天看了csdn上的一段視頻講解c#3.0的,雖然主講人有點口吃但我還是堅持 聽完了。裡面有一句話我引起了我的興趣,如果在結構上相同我們就可以對一個 匿名型別進行強轉。看來在關鍵時刻我們還是可以直接操作匿名型別的雖然有點 麻煩。我們知道匿名型別實際上就是.net自動產生的一個泛型類,並且只要欄位名 相同類型相同就會使用同一個匿名型別。所以我們只要類用這個特性就可以把一 個通過參數傳遞的匿名型別進行強轉了。public T CastAnonymous<T>(object

C#3.0雜談之使用EventLog類寫Windows事件記錄

作業系統:Windows XP SP3開發工具:Visual Studio 2008語言:C# 3.0.net Framework:3.5在程式中經常需要將指定的資訊(包括異常資訊和正常處理資訊)寫到日誌中。在C#3.0中可以使用EventLog類將各種資訊直接寫入Windows日誌。EventLog類在System.Diagnostics命名空間中。我們可以在“管理工具” > "事件檢視器“中可以查看我們寫入的Windows日誌,如下圖所示:

C#3.0新特性――隱含類型局部變數和匿名型別

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;

C#3.0 新特性之隱式類型化數組

C#3.0這個特性是對隱式類型化本地變數的擴充,有了這個特性,將使我們建立數組的工作變得簡單。我們可以直接使用"new[]"關鍵字來聲明數組,後面跟上數組的初始值列表。在這裡,我們並沒有直接指定數組的類型,數組的類型是由初始化列表推斷出來的。class AnonymousTypeArray : AppRunner.AbstractApplication{public override void Run(){var intArray = new[] { 1, 2, 3, 4,

C#3.0中自動屬性和對象初始化器

C#3.0中定義屬性更加方便,不用再在像之前的版本那樣的繁瑣,需要先定義儲存資料的欄位,然後再定義屬性器,現在只需要定義屬性器就可以了,其它的有編譯器自動為我們完成,就可以省去定義欄位時需要的那些時間;在對象初始化的時候我們可在物件建構的時候實現對象屬性的初始化工作,和集合初始化類似。1.匿名屬性定義屬性如下:public class  Employee{public int Id { get; set; }public 

C#3.0實現突變賦值(Mutantic Assignment)

話題從今天TerryLee關於MVC的一段代碼說起:protected void Application_Start(){    RouteTable.Routes.MapRoute(        "Default", // Route name        "{controller}/{action}/{id}", // URL with  parameters        new { controller = "Home", 

C#3.0筆記(二)預備知識之委託與事件

在上篇blog中簡單地介紹了委託的基礎知識,在這片文章中會介紹下委託跟 事件之間的聯絡。事件的由來我們可以看到在使用委託進行回調 的實現的時候,我們往往需要再定義一個委派物件,以及一個對外公開的輔助方 法來添加委託的方法,這樣子會使我們感覺比較繁瑣。C#提供了event關鍵字來 減輕直接使用委託的負擔,編譯器會自動提供註冊、取消註冊的方法和委託必要 的成員。首先來看看定義事件的步驟:1.先定義委託類型;2.通 過event關鍵字定委託類型的事件。public delegate int 

C#3.0筆記(一)預備知識之Delegate

在學習C#3.0之前還是先來回顧下委託、事件,因為這樣能更加有助於理解 C#3.0裡面的一些新的特性,如Lambada運算式等。背景在C語言 中我們可以用函數指標來建立回呼函數,但是在C裡面回呼函數存在一些安全問 題。因為它只是在記憶體位址中記錄了下來,並沒有像方法的參數類型、參數個數 、傳回值等其他安全資訊。而在.Net FrameWork中,回調仍然是可以的,.net framework中提供了更為進階的更為安全的物件導向的delegate來實現。定義委託在委託中主要包含了三個重要的資訊:1

C#3.0新體驗(二)

前言:學習除了要堅持不懈,還需要有好的方法!總結整理自己學習 的資料能使得所學的內容條理清晰,尋找回顧也很方便!俗話說的好:“ 好記性不如爛筆頭”;以前很多知識都是看過後,過一段時間就忘記,時 間花下去了,但效果甚微;看的多,但雜而不精;這些都是沒有做筆記,沒有深 入學習而導致的時間與精力的浪費,因此每個研究課題,都要好好整理資料,做 一個系列的研究!三.擴充方法 (續接上一編)擴充方法定義如 下:public static class

《C#3.0 in a Nutshell,3rd Edition》之C#3.0和.net3.5基本介紹

前言C#3.0是一門物件導向的程式設計語言,具有多用途和型別安全等特 征。為實現開發和學習的高效性,她在語言的簡單,易表達,以及可程式化性上做 了很大努力。使得新人能夠很快入門,開發人員能夠快速開發出程式。但這些並不 是損害語言的功能為前提的。本文one Section  C#的面向對 象性(Object Orientation)C#同JAVA一樣是物件導向的語言,具有封裝 (encapsulation),多態(polymorphism),繼承(polymorphism)的特性。但是她

C# 使用AD(Active Directory)驗證內網使用者名稱密碼

1. 連到內網,找到AD的domain地址nslookup set types=all_ldap._tcp2. 驗證AD的函數public bool ADLogin(string userName, string password) { // sample : // LDAP://xxx.com string domain =

C# GetHashCode 的實現方式

在項目中,在使用雜湊表時,有時會需要Override GetHashCode。這裡給出一種普遍的做法:版本1:實現一個helper,傳遞類型T,返回這個類型的hashcode。函數邏輯很直接,只是做了null check而已;如果obj不為空白,則直接使用obj的hash code。public class HashHelper{private int _seed = 17;public int Hash<T>(T obj){// why 31?//

C# 使用 doggleReport 產生pdf報表

1. 安裝nuget-install package DoddleReport-install package DoddleReport.iTextSharp2. 執行個體代碼static void Main(string[] args) { var query = GetAll(); var report = new Report(query.ToReportSource());

C# UDP收發請求工具類介紹

初始化:ListeningPort = int.Parse(ConfigurationManager.AppSettings["ListeningPort"]);SendingPort = int.Parse(ConfigurationManager.AppSettings["SendingPort"]);SendingIp =

總頁數: 159 1 .... 135 136 137 138 139 .... 159 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.