改善C 程式的50種方法 讀後小記

2021-10-02 05:36:27 字數 2207 閱讀 9872

譯者:dsqiu

c# 有兩種常量:編譯時常量和執行時常量。你可以使用 readonly 關鍵字宣告執行時常量,使用 const 關鍵字宣告編譯器常量。執行時常量的值是在執行時得到的。當你引用乙個唯讀(read-only)常量, il 會引用乙個 readonly 變數而不是直接使用值。

相比 readonly ,使用 const 最後的乙個優勢就是效能:已知的常量值會比使用變數訪問的 readonly 變數產生稍微高效的**。然而,效能上甚微的收效和靈活性的減小應該做乙個很好的權衡。放棄靈活性之前一定要剖析效能差異。可選引數的預設值會在呼叫時會像編譯時變數(宣告為 const 的變數)一樣被替換成預設值。和使用 readonly 和 const 變數一樣,你要非常認真對待可選引數值的不同。

盡可能使用 as ,但是 as 操作符是不能再值型別上使用的。

c# 有乙個更好的選擇:條件特性。使用條件特性,能分離出不同函式,只有在特定的環境變數的定義或某些值的設定才會屬於你的類。

[conditional("debug")] 

private void checkstate()

當你定義型別(類或結構體)時,你同時要定義型別的相等。 c# 提供四種不同的函式決定兩個不同物件是否「相等」:

public static bool referenceequals (object left, object right);

public static bool equals (object left, object right);

public virtual bool equals(object right);

public static bool operator ==(myclass left, myclass right);

gethashcode() 只用在乙個地方:定義基於雜湊 key 集合,典型地, hashset或者 dictionary容器。

任何重寫 gethashcode() 必須遵循下面三個條件:

1.如果兩個物件相等(被操作符 == 定義),你產生相同的雜湊值。否則雜湊碼不能用來查詢容器中的物件。

2.對任何物件 a , a.gethashcode() 必須是乙個例項不變數。無論什麼方法呼叫 a.gethashcode() 必須返回相同的值。這保證了乙個物體總是儲存在正確的桶中。

3.雜湊函式應該針對所有輸入情況產生乙個整數隨機分布。這就是為什麼基於雜湊容器高效。

關於c#的gethashcode

舉個例子:

private readonly listdatas = new list();

public listfindall(predicatematch, ref listresult,int count = 0)

return result;

}private static bool check(t t)

private predicatechecker()

用多個簡短的小函式代替大段**塊組成的函式,目的一是可以增強閱讀性和擴充套件性,二是避免編譯器產生額外的開銷

短小而簡單的函式可以讓 jit 編譯器很容易支援暫存器化(enregistration) 。暫存器化是指處理器選擇暫存器而不是棧儲存區域性變數。建立更少的區域性變數使得 jit 編譯器更好的找到可用的暫存器。

在變數宣告的時候初始化而不是在建構函式內初始化。你應該使用初始化語法為靜態變數和例項變數進行初始化。

靜態成員變數在建立物件例項之前就已經初始化了。c# 提供了靜態初始化語法和靜態建構函式對靜態成員變數進行初始化。靜態建構函式是乙個比其他函式,變數,屬性在沒有訪問之前就被執行的特殊函式。

和例項初始化一樣,靜態初始化語法在任何靜態建構函式之前執行。並且,你的靜態初始化語法比基類的靜態建構函式更早執行。

使用 using 語句可以保證 dispose() 被呼叫。你使用 using 語句分配物件,c# 編譯器就會產生 try/finally 塊包含這些物件:

sqlconnection myconnection = null;

// example using clause:

using (myconnection = new sqlconnection(connstring))

// example try / catch block:

try

finally

改善C 公共程式類庫質量的10種方法

最近重構一套 運用以下幾種方法,供參考。1 公共方法盡可能的使用快取 public static list getregisteredcompany 這個方法返回的值,可能會被多個地方用到。應該把這個方法的值快取起來,供程式多次使用。2 使用narrange格式化 這個工具,可以將 格式化,用reg...

改善腦力的120種方法

簡介120種方法幫助你提高思維速度,改善記憶水平和資訊綜合能力,將你的大腦潛力發揮得淋漓盡致!還等什麼,從今天就開始訓練吧。括號內內容為譯者所加,本文只是導航貼,每個條目還需細看細學,淺色字型的翻譯的正確性不是很確定,自擊鏈結閱之。1.練習腦子急轉彎,嘗試解決難題,猛點這裡 2.培養雙手並用。嘗試用...

改善腦力的120種方法

本文送給腦力 已經跌得無法再跌,已經出現地板效應的潔潔小朋友!並祝各位中秋節快活,腦力開發得快活!1.練習腦子急轉彎,嘗試解決難題,猛點這裡 2.培養雙手並用。嘗試用你的非優勢手刷牙,梳頭,用滑鼠 雙手一起寫字 使用刀叉的方式調換下。3.接受歧義現象。學會接受和喜歡悖論 和錯覺 4.學習思維 5.嘗...