理解C# 3.0新特性之Extension方法淺議

在C#3.0中,引入了一些列新的特性,比如: Implicitly typed local variable, Extension method,Lambda expression, Object initializer, Anonymous type, Implicitly typed array, Query expression, Expression tree。個人覺得在這一系列新特性的,最具創新意義的還是Extension method,

初探C# 3.0

C#3.0已經推出好一段時間了,由於種種原因,一直沒有去學習,這兩天在園 子中看到老趙的拯救C# 2.0,但是我們真做的到嗎?。裡面提到了些C#3.0的新 特性和優勢。勾起了我對3.0的興趣,初探學習一下,分享給新手。在 C#2.0中,微軟給我們帶來了一些新的特性,例如泛型,匿名委託等。然而,這 些新的特性多多少少會給人一種從別的語言中“抄”來的感覺(例如 泛型類似C++的模板,一些屬性類別似Java中的一些東西)。但是在C#3.0中,微軟

Visual C# 3.0新特性概覽

在發布Visual Studio 2005和C#2.0之後,微軟公司又馬不停蹄的展示了人們所期望的C#的下一代版本:C# 3.0。儘管C#

執行個體C#:學習使用StatusStrip

先瞭解一下StatusStrip:首選StatusStrip是Form中的一個控制項,同時也是一個大的控制項,其中含有許多子控制項,這些子控制項存放在控制項群中。這樣我們要使用StatusStrip時,首先要定義StatusStrip,然後定義ToolStrip控制項,再次定義ToolStrip控制項群,第三將ToolStrip控制項加入到控制項群中,第四將控制項群加入到StatusStrip中,最後要將StatusStrip加入到表單中。舉例說明:本例是在Form表單中加入工作列,並在工作列左

C#實現順序棧

棧(Stack)是操作限定在表的尾端進行的線性表。表尾由於要進行插入、刪除等操作,所以,它具有特殊的含義,把表尾稱為棧頂(Top),另一端是固定的,稱為棧底(Bottom)。棧相當與生活中洗盤子一樣,把洗淨的盤子一個接一個地往上放(相當於把元素入棧);取用盤子的時候,則從最上面一個接一個地往下拿(相當於把元素出棧)。下面為棧的介面:(IDS為各種資料結構的公用介面,包含Count(),IsEmpty(),Clear()三個操作,前面順序表已經定義過)using System;using

C#實現順序表

這幾天需要實現各種資料結構(泛型).主要實現線性表和鏈表。線性表是由n(n>=0)個相同類型的資料元素構成的有限序列。除第一個元素外,其餘元素只有一個直接前驅;除最後一個元素外,其餘元素只有一個直接後繼。順序表是把表中元素一個接一個地放進一快地址連續的空間,因此順序表的實現有數組來完成。由於這次需要實現多種資料結構,各種資料結構都有相同的方法,比如求長度,清空等。因此定義一個公用介面:namespace DateStructrues{  public interface IDS<T&

用Visual C# 2005建立捷徑

建立捷徑對於絕大多數 Windows 使用者來說都是小菜一碟了,然而,這項 工作卻為程式員帶來不少麻煩。.NET 沒有提供簡便直接的建立捷徑的方法 ,那麼在 .NET 中我們如何為應用程式建立捷徑呢?1. 捷徑文 件捷徑實質上是一個副檔名為 .LNK 的檔案。右擊一個捷徑文 件並選擇屬性,跳到捷徑選項卡,如圖1所示:你可 以看到一個捷徑包含如下資料:·捷徑的名字·捷徑所指向的目標所在的位置·捷徑所

《Effective C#》:用委託實現回調

委託屬於C#中的新名詞,它的應用也非常廣泛,例如事件就是委託最簡單而又直接的例子。那麼首先說說什麼是委託,其實委託在用過C或者C++的人看來就是函數指標,不過使用C#的大多數人都沒有用過這兩門語言,因此對委託的理解不是很深,對於委託可以簡單的從字面去理解,即“委託別人去執行某些操作”,也就是說執行一個操作,而這個操作過程自身並不知道,只是委託過來讓你去執行而已。參看如下這個例子。public delegate void HelloHandler( string Msg )

《Effective C#》:實值型別和參考型別

在C#中有兩種類型的資料,一種是實值型別資料,一種是參考型別資料。在編 碼的時候區分這兩種類型資料,可以避免一些細小的編碼錯誤。首先說 說什麼類型是實值型別,例如:int、float、bool之類的基礎類型,以及用struct 定義的類型,如:DateTime。除此外,如string,數組,以及用class定義的類 型等都是參考型別。對於C#來說,很難羅列出所有類型進行一一分別,這需要自己在編碼過程中進行分析總結。為了更好地說明兩種類型之間的區別, 借用如下的表格來說明。

《Effective C#》:區別四個判等函數

.Net有四個判等函數?不少人看到這個標題,會對此感到懷疑。事實上確是 如此,.Net提供了ReferenceEquals、靜態Equals,具體類型的Equals以及==操 作符這四個判等函數。但是這四個函數之間有細微的關係,改變其中一個函數的 實現會影響到其他函數的操作結果。首先要說的是 Object.ReferenceEquals和Object.Equals這兩個靜態函數,對於它們倆來說, 是不需要進行重寫的,因為它們已經完成它們所要得做的操作。對於

《Effective C#》:使用成員初始化語句

為了方便內容的開展,我先說說一個對象的構造過程。對於類型第一 個執行個體的構造過程大致如下:1.分配靜態成員的記憶體空間,此時空間存 儲資料為0;2.執行靜態成員的初始化語句;3.執行基類的靜 態建構函式;4.執行類型的靜態建構函式;5.分配成員的記憶體 空間,此時空間儲存資料為0;6.執行成員的初始化語句;7. 執行相應的基類建構函式;8.執行類型的建構函式。那麼對於 同類型的後續建立對象,前4個步驟不用執行的,直接從第5步開始。現

《Effective C#》之減少裝箱和拆箱

為了便於文章的開展,首先介紹裝箱(Boxing)和拆箱(Unboxing)這兩個名詞 。.Net的類型分為兩種,一種是實值型別,另一種是參考型別。這兩個類型的本質 區別,實值型別資料是分配在棧中,而參考型別資料分配在堆上。那麼如果要把一 個實值型別資料放到堆上,就需要裝箱操作;反之,把一個放在堆上的實值型別資料 取出來,則需要進行拆箱操作。例如,對於如下簡單的裝箱和拆箱操作 語句。int i = 123;  object obj = i;//Boxing  if( obj is int

《Effective C# 精髓》摘選

昨天買了一本《Effective C#》,看了幾個Item,雖然沒有當初讀 《Effective C++》時的那般震撼,但是也收穫不少。把其中的要點記錄於下, 有些條款加上了自己的理解,權當作讀書筆記吧 :-)Item 1: Always Use Properties Instead of Accessible Data Members這個是地球人都 知道的條款了。你需要記住,屬性是類的外部介面部分,而(公用)成員卻是內

Effective C#原則50:瞭解ECMA標準

ECMA標準是C#語言所有功能的官方說明。ECMA-334定義了C#語言1.0的標準, 你可以從The C# Programming Language這本書上學習C#2.0的計劃(譯註:現在 已經不是計划了),這本書的作者是Anders Hejlsberg, Scott Wiltamuth, 和 Peter Golde (Addison-Wesley, 2003)。這本書是一個語言手冊,而不是指南。 它詳細說明了這門語言書面定義的每一個功能。每一種語言都只一種標記,可以

Effective C#原則48:瞭解更多的工具和資源

對於C#以及.Net來說這是激動人心的時候。這些工具目前還是比較新的,整 個社區都在學習如何使用這些工具。一些資源可以協助你提高你的知識,以及為 .Net和C#建立一個更大的知識社區。這些工具是我每天都向C#開發人員推薦的。 關於C#實踐的全部內容還在寫作當中,跟進它們而且不斷瞭解相關的內容。第一個應該在每一個C#開發人員的工具箱的工具是NUnit, 它可以在 www.nunit.org網站上找到。NUnit是一個自動進行單元測試的工具,功能和

Effective C#原則47:選擇安全的代碼

.Net運行時已經設計好了,一些懷有惡意的代碼不能滲透到遠端電腦上並 執行。目前一些分部式系統依懶於從遠程機器上下載和執行代碼。如果你可以通 過Internet或者乙太網路來發布你的軟體,或者直接從web上運行,但你須要明白 CRL在你的程式集中的一些限制。如果CLR不是完全相信一個程式集,它會限制一 些的行為。這些調用代碼要有訪問安全認證(CAS)。從另一方面來說,CLR強制要 求基於角色的安全認證,這樣這些代碼才能或者不能在基於一個特殊的角色帳號

Effecitve C#原則46:最小化與其它Unmanaged 程式碼的互動

在開發設計.Net時,MS所做的最聰明的修改之一就是他們意識到,如果沒有 辦法整合已經存在的代碼到新的.Net環境中,那沒沒有人會接受這個新的平台。 MS知道,如果沒有辦法來利用已經存在的代碼,這將阻止大家接受它。與其它非 Managed 程式碼的互動是可以工作了,但這是可互動唯一可以拿來說一下的有利的地方 。對於所有的互動策略,當操作流程在本地代碼和Managed 程式碼之間的邊界上進行傳 送時,都要求強制提供一些 編組的訊號。同時,互動策略強迫開發人員必須手

Effective C#原則45:選擇強異常來保護程式

當你拋出異常時,你就在應用程式中引入了一個中斷事件。而且危機到程式 的控制流程程。使得期望的行為不能發生。更糟糕的是,你還要把清理工作留給最 終寫代碼捕獲了異常的程式員。而當一個異常發生時,如果你可以從你所管理的 程式狀態中直接捕獲,那麼你還可以採取一些有效方法。謝天謝地,C#社區不 須要建立自己的異常安全性原則,C++社區裡的人已經為我們完成了所有的艱巨的 工作。以Tom Cargill的文章開頭:“異常處理:一種錯誤的安全感覺, ” 而且Herb

Effective C#原則44:建立應用程式特定的異常類

異常是一種的報告錯誤的機制,它可以在遠離錯誤發生的地方進行處理錯誤。所有關於錯誤發生的的資訊必須包含在異常對象中。在錯誤發生的過程中,你 可能想把底層的錯誤轉化成詳細的應用程式錯誤,而且不丟失關於錯誤的任何信 息。你須要仔細考慮關於如何在C#應用程式中建立特殊的異常類。第一步就是 要理解什麼時候以及為什麼要建立新的異常類,以及如何構造繼承的異常資訊。當開發人員使用你的庫來寫catch語句時,他們是基於特殊的進行時異常在區別為 同的行為的。每一個不同的異常類可以有不同的處理要完成:try

Effective C#原則43:請勿濫用反射

建立二進位的組件時,同時也意味著你要使用遲後綁定和反射來尋找你所須 要的具有特殊功能代碼。反射是一個很有力的工具,而且它讓你可以寫出可動態 配置的軟體。使用反射,一個應用程式可以通過添加新的組件來更新功能,而這 些組件是在軟體最開始發布時沒有的。這是有利的。這一伸縮性也帶來 了一些複雜的問題,而且複雜問題的增加又會增加出現其它問題的可能。當你使 用反射時,你是圍繞著C#的安全類型。然而,成員調用的參數和傳回值是以

總頁數: 4314 1 .... 2835 2836 2837 2838 2839 .... 4314 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.