提高C#編程水平不可不讀的50個要訣

提高C#編程水平的50個要點

1.總是用屬性 (Property) 來代替可訪問的數據成員

2.在 readonly 和 const 之間,優先使用 readonly

3.在 as 和 強制類型轉換之間,優先使用 as 操作符

4.使用條件屬性 (Conditional Attributes) 來代替條件編譯語句 #if

5.總是為自定義類重載 ToString 方法

6.區別值類型和引用類型

7.使用不可變的值類型(Immutable Atomic Value Types)

8.在值類型中,確保0是一個合法的數據

9.理解 ReferenceEquals, static Equals, instance Equals 和 比較運算符(==)之間的關系

10.理解 GetHashCode方法的缺陷

11.在編寫循環時,優先使用 foreach.

12.在定義變量的時候就將其初始化

13.使用靜態構造函數來初始化靜態成員變量

14.用多個構造函數時,利用構造函數鏈

15.使用using和try/finally來處理資源的釋放

16.盡量避免產生資源垃圾

17.盡量避免使用裝箱(boxing)和拆箱(unboxing)

18.實現類的 Dispose 方法

19.在接口和繼承(Inheritance)之間,優先使用接口(interface)

20.區分接口和重載(overrides)

21.用委托(delegate)來實現回調(callback)

22.用事件(event)來定義外部接口

23.避免返回類內部成員的引用

24.使用元數據來控制程序

25.優先使用可序列化(serilizable)類型

26.對需要排序的對象實現IComparable和IComparer接口

27.避免使用 ICloneable接口

28.避免使用類型轉換操作符

29.只有當基類加入了與派生類中現有的函數名稱相同的函數時,才需要使用 new 操作符

30.盡量使用 CLS-Compliant

31.盡量編寫短少,簡單的函數

32.盡量編寫比較小的程序集(assembly)

33.限定類型的可見性(visibility)

34.編寫大粒度的 web API

35.在使用事件時,優先繼承基類事件,而不是重新創建一個事件

36.多使用 framework 的運行時調試 (DEBUG, TRACE, EVENTLOG等)

37.使用.net標準的配置機制

38.使用并且在類中支持.net的數據綁定功能 (Data Binding)

39.使用.net的驗證機制 (Validation)

40.根據你的需求選擇正確的集合類(Collection)

41.在自定義結構中使用 DataSet

42.利用屬性(Attributes)

43.不要過度使用反射(Reflection)

44.創建完整的,應用程序特定的異常

45.盡可能多的考慮程序可能出現的異常,并作出處理

46.盡可能少的使用 Interop

47.盡量使用安全代碼 (safe code)

48.多多學習、使用外部工具和資源

49.準備使用 C# 2.0

50.學習 ECMA 標準

轉載于:https://www.cnblogs.com/penbor/archive/2009/08/01/1536448.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379595.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

那個年代的蘇聯歌曲

小時候,不時聽父親提起電影《這里的黎明靜悄悄》,怎么也想不到如此美麗的名字為什么要和戰爭聯系起來。后來在大學看了這部電影之后,開始認為這名字是合適的,因為電影講的是女性——戰場中的女性,各自都懷揣著愛情去保…

linux系統編程---進程總結

進程控制總結1 進程創建的三種方式forkvfrokclone2 進程終止進程正常退出returnexit_exit進程異常退出進程收到某個信號,而該信號使進程終止abort3 進程等待進程等待的方法waitwaitpid4 進程替換替換原理替換函數制作一個簡單的shell1 進程創建的三種方式 參考文章…

銀行賬務轉賬系統(事務處理)

流程如下: 創建項目工程如下: transfer包下的代碼如下: package beyond.transfer.dao;import java.sql.Connection; import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import beyond.utils.DataSourceUtils;pu…

【msdn wpf forum翻譯】TextBox中文本 中對齊 的方法

原文鏈接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/49864e35-1dbf-4292-a361-93f1a8400558問題:TextBox中文本中對齊,使用 TextBox.HorizontalContentAlignment"Center"行不通(TextBox.VerticalConte…

wifi操作及實例

1.什么事WIFI 利用無線路由器上網的協議2.獲取WIFI網卡的狀態 WIFI網卡的狀態是由一系列的整形常量來表示的 有狀態: 網卡不可用WIFI_STATE_DISABLED 對應值為1 網卡正在關閉WIFI_STATE_DISABLING 對應值為0 網卡可用WIFI_STATE_ENABLED 對應的值為3 …

c語言 函數的參數傳遞示例_C語言中帶有示例的remove()函數

c語言 函數的參數傳遞示例C語言中的remove()函數 (remove() function in C) The remove() function is defined in the <stdio.h> header file. remove()函數在<stdio.h>頭文件中定義。 Prototype: 原型&#xff1a; int remove(const char* filename);Parameter…

使用ThreadLocal綁定連接資源(事務)

dao層代碼如下&#xff1a; package beyond.transfer.dao;import java.sql.Connection; import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import beyond.utils.DataSourceUtils; import beyond.utils.MyDataSourceUtils;public class TransferDa…

算法---棧和隊列

棧和隊列1 棧棧的順序存儲棧的鏈式存儲2 隊列隊列的順序存儲隊列的鏈式存儲3 棧和隊列的應用用棧實現隊列用隊列實現棧最小棧1 棧 參考文章&#xff1a; https://zhuanlan.zhihu.com/p/346164833 https://zhuanlan.zhihu.com/p/120965372#:~:text%E6%A0%88%E6%98%AF%E4%B8%80%…

學習網站LIST

面向對象的腳本語言Rubyhttp://rubycn.ce-lab.net/20020101.htmlRUBY文檔中心http://www.moer.net/ruby/doc/TCL腳本http://www.tclchina.com/Python快速入門http://wiki.woodpecker.org.cn/moin/WeiZhong/2006-01-17Python 研究(Dive Into Python)http://www.woodpecker.org.c…

再次參加(第七屆)商學院徒步戈壁挑戰賽,賦詞幾首

2012年5月21-25日&#xff0c;再次踏上甘肅莫賀延磧戈壁&#xff0c;參加第七屆商學院徒步戈壁挑戰賽。時隔五年&#xff0c;時空轉換。 少年游 ——戈壁緣 江南物華&#xff0c;遠水碧山&#xff0c;燈火相掩映。暮宴朝歡&#xff0c;酒綠燈紅&#xff0c;躑躅夜歸人。 孤城落…

Java StackTraceElement toString()方法與示例

StackTraceElement類的toString()方法 (StackTraceElement Class toString() method) toString() method is available in java.lang package. toString()方法在java.lang包中可用。 toString() method is used to represent stack trace element as a string or in other word…

增刪改查

web層代碼如下&#xff1a; package beyondwsq.web;import java.io.IOException; import java.sql.SQLException; import java.util.List;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; imp…

在WebBrowser中通過模擬鍵盤鼠標操控網頁中的文件上傳控件

引言 這兩天沉迷了Google SketchUp&#xff0c;剛剛玩夠&#xff0c;一時興起&#xff0c;研究了一下WebBrowser。 我在《WebBrowser控件使用技巧分享》一文中曾談到過“我現在可以通過WebBrowser實現對各種Html元素的操控&#xff0c;唯獨無法控制Html的上傳控件”&#xff0c…

編寫最簡單的字符設備驅動

編寫最簡單的字符設備驅動1 編寫驅動代碼2 編寫makefile3 編譯和加載驅動4 編寫應用程序測試驅動參考文章&#xff1a; linux驅動開發第1講&#xff1a;帶你編寫一個最簡單的字符設備驅動 linux驅動開發第2講&#xff1a;應用層的write如何調用到驅動中的write 1 編寫驅動代碼…

Java ObjectStreamField toString()方法與示例

ObjectStreamField類toString()方法 (ObjectStreamField Class toString() method) toString() method is available in java.io package. toString()方法在java.io包中可用。 toString() method is used to return a string that defines this field. toString()方法用于返回定…

linux內核文件描述符fd、文件索引節點inode、文件對象file關系

文件描述符fd、文件索引節點inode、文件對象file關系1 VFS對象1.1 超級塊對象1.2 索引節點對象1.3 文件對象1.4 進程描述符1.5 files_struct2 如何根據文件描述符fd找到文件&#xff1f;1 VFS對象 在說fd、inode和file關系之前&#xff0c;我們先了解VFS的幾個概念。分別是進程…

sql2005 獲取表字段信息和視圖字段信息

獲取表字段名,和字段說明SELECT[Table Name]OBJECT_NAME(c.object_id), [ColumnName]c.name, [Description]ex.value FROMsys.columns c LEFTOUTERJOINsys.exte…

解析css之position

CSS的很多其他屬性大多容易理解&#xff0c;比如字體&#xff0c;文本&#xff0c;背景等。有些CSS書籍也會對這些簡單的屬性進行大張旗鼓的介紹&#xff0c;而偏偏忽略了對一些難纏的屬性講解&#xff0c;有避重就輕的嫌疑。CSS中主要難以理解的屬性包括盒型結構&#xff0c;以…

Java ObjectInputStream readLong()方法(帶示例)

ObjectInputStream類readLong()方法 (ObjectInputStream Class readLong() method) readLong() method is available in java.io package. readLong()方法在java.io包中可用。 readLong() method is used to read 8 bytes (i.e. 64 bit) of long value from this ObjectInputSt…

交換瓶子(藍橋杯)

有N個瓶子&#xff0c;編號 1 ~ N&#xff0c;放在架子上。 比如有5個瓶子&#xff1a; 2 1 3 5 4 要求每次拿起2個瓶子&#xff0c;交換它們的位置。 經過若干次后&#xff0c;使得瓶子的序號為&#xff1a; 1 2 3 4 5 對于這么簡單的情況&#xff0c;顯然&#xff0c;至少…