Effective C#原則12:選擇變數初始化而不是指派陳述式

(譯註:根據我個人對文章的理解,我把initializer譯為:初始化器,它是 指初始化文法,也就是在一個類裡聲明變數的同時,直接建立執行個體值的方法。例:object m_o = new object();如果這段代碼不在任何函數內,但在 一個類裡,它就是一個初始化器,而不管你是把它放在類的開始還以結尾。)一些類經常不只一個建構函式。時間一長,就難得讓它的成員變數以及 建構函式進行同步了。最好的確保這樣的事不會發生的方法就是:在聲明就是的

Effective C#第二章:.Net資源管理

一個簡單的事實:.Net應用程式是在一個託管的環境裡啟動並執行,這個環境和 不同的設計器有很大的衝突,這就才有了Effective C#。極大限度上的討論這個 環境的好處,須要把你對本地化環境的想法改變為.Net CLR。也就意味著要明白 .Net的記憶體回收行程。在你明白這一章裡所推薦的內容時,有必要對.Net的記憶體管 理環境有個大概的瞭解。那我們就開始大概的瞭解一下吧。記憶體回收行程 (GC)為你控制託管記憶體。不像本地運行環境,你不用負責對記憶體流失,不定指標

Effective C#原則11:選擇foreach迴圈

C#的foreach語句是從do,while,或者for迴圈語句變化而來的,它相對要好 一些,它可以為你的任何集合產生最好的迭代代碼。它的定義依懶於.Net架構裡 的集合介面,並且編譯器會為實際的集合產生最好的代碼。當你在集合上做迭代 時,可用使用foreach來取代其它的迴圈結構。檢查下面的三個迴圈:int [] foo = new int[100];// Loop 1:foreach ( int i in foo) Console.WriteLine( i.ToString( ));//

Effective C#原則10:明白GetHashCode()的缺陷

這是本書中唯一一個被一整個函數佔用的原則,你應該避免寫這樣的函數。 GetHashCode()僅在一種情況下使用:那就是對象被用於基於散列的集合的關鍵 詞,如經典的HashTable或者Dictionary容器。這很不錯,由於在基類上實現的 GetHashCode()存在大量的問題。對於參考型別,它可以工作,但高效不高;對 於實值型別,基類的實現經常出錯。這更糟糕。你自己完全可以寫一個即高效又正 確的GetHashCode()。沒有那個單一的函數比GetHashCode()討論的更多,且令人

Effective C#原則9:明白幾個相等運算之間的關係

明白ReferenceEquals(), static Equals(), instance Equals(), 和運算行 符==之間的關係。當你建立你自己的類型時(不管是類還是結構),你要 定義類型在什麼情況下是相等的。C#提供了4個不同的方法來斷定兩個對象是否 是相等的:public static bool ReferenceEquals ( object left, object right );public static bool Equals ( object left,

Effective C#原則8:確保0對於實值型別資料是有效

.Net系統預設所有的對象初始化時都為0。這並沒有提供一個方法來預防其他 程式員建立的實值型別資料的執行個體在初始化是都是0。請讓你的資料類型預設值也 是0。一個特殊情況是在枚舉類型資料中。決不要建立一個不包括0在內 的枚舉類型。所有的枚舉類型都是從System.ValueType派生的。枚舉類型的值是 從0開始的,但你可以改變這一行為:public enum Planet{ // Explicitly assign values. // Default starts at 0

Effective C#原則7: 選擇恒定的原子實值型別資料

恒定類型(immutable types)其實很簡單,就是一但它們被建立,它們(的值) 就是固定的。如果你驗證一些準備用於建立一個對象的參數,你知道它在驗證狀 態從前面的觀點上看。你不能修改一個對象的內部狀態使之成為無效的。在一個 對象被建立後,你必須自己小心翼翼的保護對象,否則你不得不做錯誤驗證來禁 止改變任何狀態。恒定類型天生就具有線程完全性的特點:多訪問者可同時訪問 相同的內容。如果內部狀態不能修改,那麼就不能給不同的線程提供查看不一致

Effective C#原則4:用條件屬性而不是#if先行編譯塊

使用#if/#endif 塊可以在同樣源碼上產生不同的編譯(結果),大多數debug 和release兩個版本。但它們決不是我們喜歡用的工具。由於#if/#endif很容易 被濫用,使得編寫的代碼難於理解且更難於調試。程式語言設計者有責任提供更 好的工具,用於產生在不同運行環境下的機器代碼。C#就提供了條件屬性 (Conditional attribute)來識別哪些方法可以根據環境設定來判斷是否應該被 調用。(譯註:屬性在C#裡有兩個單詞,一個是property另一個是

Effective C#原則3:選擇is或者as操作符而不是做強制類型轉換

C#是一個強資料類型語言。好的編程實踐意味著當可以避免從一種資料類型 強制轉化為另種資料類型時,我們應該盡我們的所能來避免它。但在某些時候, 運行時類型檢測是不可避免的。在C#裡,大多數時候你要為調用函數的參數使用 System.Object類型,因為Framwork已經為我們定義了函數的原型。你很可能要 試圖把那些類型進行向下轉化為其它類型的介面或者類。你有兩個選擇:用as運 算符,或者,採用舊式的C風格,強制轉換。(不管是哪一種,)你還必須對變數

Effective C#原則2:為你的常量選擇readonly而不是const

對於常量,C#裡有兩個不同的版本:運行時常量和編譯時間常量。因為 他們有不同的表現行為,所以當你使用不當時,將會損傷程式效能或者出現錯誤 。兩害相權取其輕,當我們不得不選擇一個的時候,我們寧可選擇一個 運行慢一點但正確的那一個,而不是運行快一點但有錯誤的那個。基於這個理由 ,你應該選擇運行時常量而不是編譯時間常量(譯註:這裡隱藏的說明了編譯時間常 量效率更高,但可能會有錯誤)。編譯時間常量更快更直接,但在可維護性 上遠不及運行時常量。保留編譯時間常量是為了滿足那些對效能要求克刻,且隨著

Effective C#原則1:儘可能的使用屬性(property),而不是資料成員(field)

我們的目標:儘可能編寫出運行效率更高,更健壯,更容易維護的C#代碼。原則一:儘可能的使用屬性(property),而不是資料成員(field)。Always use properties instead of accessible data members.出於以下幾點原因,請在設計類時,儘可能的使用屬性,而不 是成員。1、.Net對屬性的支援遠遠大於對成員的支援,你可以對屬性進 行資料繫結,設計時說明等很多資料成員不被支援的內容。看看.net裡的屬性面

Effective C#教程

Effective C#原則1:儘可能的使用屬性(property),而不是資料成員(field)Effective C#原則2:為你的常量選擇readonly而不是constEffective C#原則3:選擇is或者as操作符而不是做強制類型轉換Effective C#原則4:用條件屬性而不是#if先行編譯塊Effective C#原則5:始終提供ToString()Effective C#原則6:區別實值型別資料和參考型別資料Effective C#原則7:

c# 2.0下簡單的FTP應用程式

介紹微軟的.net framework 2.0相對於1.x來說增加了對FTP的支援。以前為了符 合我的需求,我不等不使用第三方類庫來實現FTP功能,但是為了可靠,還是使 用.net framework的類比較好。我的這段代碼沒有做成可重複使用的類庫的形式 ,但它卻是比較容易理解的並能滿足你的需求。它可以實現上傳,下載,刪除等 任意功能。在這篇文章的後面將給大家出示.net 2.0下實現ftp的簡單代碼,使 用的語言是c#。或許是因為這是.net新增的類,又或許是第三方類庫已經能很好

C#使用UDP Client編寫聊天程式

UDPClient 類使用 UDP 與網路服務通訊。UDP 的優點是簡單易用,並且能夠同時向多個地址廣播訊息。但由於 UDP 協議是一個無連線協定,因此發送到遠程終結點的 UDP 資料文報不一定能夠到達,也不一定能夠以發送的相同順序到達。使用 UDP 的應用程式必須準備處理丟失的和順序有誤的資料文報。若要使用 UDP 發送資料文報,必須知道承載所需服務的網路裝置的網路地址以及該服務用於通訊的 UDP 連接埠號碼。特殊網路地址用於支援基於 IP 的網路上的 UDP 廣播訊息。下面探討的內容以

C#以動畫方式顯示映像

PPT 以動畫方式顯示投影片是其一個很重要的特點,相信裡邊一定有您喜歡的動畫方式,今天我就帶大家認識幾款以動畫方式顯示投影片的製作方法,由於是GDI+編程, 這裡以映像代替投影片(其實原理是相通的)來示範如何製作以動畫方式顯示映像。說明: 由於是以動畫方式顯示映像, 這裡沒辦法直接貼靜態截圖, 因此決定給園友開源, 將所有的可運行代碼附在案例後面, 由於所有的動畫處理映像的對象放在都pictureBox控制項中, 同時定義的類都大同小異,

如何在C#中建立和使用資源檔

在C#中可以使用. Resources檔案來儲存各種類型的檔案。下面我就舉例說明如何建立和使用資源檔。首先是創造一個資源檔System.Resources.ResourceWriter myResource = new System.Resources.ResourceWriter("you.resources"); myResource.AddResource("yangming",

C#擷取滑鼠所指像素的顏色

1.建立一個C# windows應用程式2.添加一個windows表單Label到Form1.cs3.單擊label1控制項然後更改Text屬性為空白字元4.更改BorderStyle屬性為FixedSingle5.按右鍵Form1.cs,然後點擊View Code添加下面Using語句到Form1.cs源碼的頂部6.using System.Runtime.InteropServices;注意該步驟添加必要的引用來調用InteropServices函數和方法7.private Bitmap

C#讀取word文檔執行個體淺析

C#讀取word文檔是如何?的呢?我們可以使用FileStream對象來把文本文 件裡面的資訊讀取出來,但是對於word文檔來說就不能使用這樣的方法了.這種情況下C#讀取word文檔的實現我們需要使用叫做” Microsoft Word 9.0 object library”COM組件來實現,它為我們提供了所有用來讀取 word文檔的對象和方法.這裡我們主要用Word.ApplicationClass下的方法來處理word應用程式.實現

c#網路攝影機編程

網路攝影機編程安裝網路攝影機後,一般可以找到一個avicap32.dll檔案這是一個關於設想頭的類using system;using System.Runtime.InteropServices;namespace webcam{////// avicap 的摘要說明。///public class showVideo{// showVideo calls[DllImport("avicap32.dll")] public static extern IntPtr capC

C#與VB的交叉繼承

VB.NET可以建立處理代碼,這些處理代碼是運行在.NET架構上的。所有的管理代碼可以和其它類型的處理代碼互動作用,而不管我們是用什麼程式設計語言來建立這些組件的。這就意味著我們可以在一種程式設計語言上建立一個類,然後應用到另外的程式設計語言中,當然也包括繼承。這正式交叉語言混繼承的混合編程機理。實際上,現在有許多程式涉及人員已經在應用這個技術了。許多的.NET系統類別庫是在C#上編寫的,而我們在VB.NET上編寫程式的時候,可以繼承這些類作為基類。建立VB.NET基類舉個例子,我們可以在VB.

總頁數: 4314 1 .... 2813 2814 2815 2816 2817 .... 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.