C 設計技巧總結

2021-08-29 04:22:08 字數 2116 閱讀 9349

做為乙個程式設計師如何從細節上來提高我們的程式設計水平?下面幾點,應該完全沒有理由不掌握的:

1。編碼習慣

對於乙個團隊開發來說,編碼習慣是非常重要的,至少我們需要按照下面一些命名規範:類名:每個單詞的第乙個字母大寫  eg: myclass欄位:第乙個單詞的第乙個字母小寫 eg: myfiled 介面:用i開頭;要使用有意義的變數和命名空間,象在定義個異常類的時候我們一般是以exception為字尾,有返回值的方法要以get開頭等等;所有的成員變數都應該申明在頂部,同時使用乙個空行來將他們和屬性、方法分開;總是將大括號放在乙個新行上。

2。委託

對於初級程式設計師來說,委託和事件的確難倒了很多人,包括我在剛進入公司的時候都沒搞懂。呵呵,只怪自己在學校的時候沒好好學,不要砸我哈。理解委託可以從一下幾個方面入手:首先我們可以把他想像成c++中的函式指標(這個不用說吧,那個大學都開了c/c++課程的),但是不同在於委託是完全物件導向的(既封裝方法又封裝例項)如何理解?比如有乙個方法,有很多的類都要去使用和實現它,有2個方法可以完成,最開始把方法寫乙個類,然後把它抽象為乙個基類,再去派生出子類,問題是在c#中只是支援單繼承,這樣有時就會造成在方法呼叫上的浪費,如在基類中有方法a,b,c但是可能我有個子類不會都需要a,b,c這三個方法;此時委託可以完全避免此類問題。舉個形象的例子,如老闆每天有很多事情要做,這時為了減輕他的負擔,他可能考慮去找個**(就是助手),一天他給他的助手說,我需要做飛機從成都到北京,這時他的助手就會說,ok,我把機票給你訂好。

3。equals()的使用

用來判斷兩個物件的引用是否指向同乙個物件,有時候這個功能不能滿足我們的需求,如:有2個人的名稱相等,我們則認為物件是相等的。這時就只能自定義equals方法了:

public  clas  user

public override int gethashcode()

}ps:如果重寫了equals,則也需要重寫gethashcode否則在程式編譯的時候就會發出警告!

對於hashtable其作用就是提供高效的搜尋,它是基於(鍵/值)的形式並且是唯一的。

4.idisposable

目的是清理物件。一般情況我們都是開啟了,使用完後就關閉掉,有時為了實現一些更高階的需求需要實現idisposable這個介面。

public class myclass:disposable

}在使用這個的時候需要考慮4點:釋放所有非受控資源;釋放所有受控資源;設定乙個標誌來表明我們所釋放的物件已經被處理過了。這時需要在乙個公共的方法中檢查這種狀態。以防物件被釋放但又啟用的情況;終止failnes方法。

5. icloneable

轉殖實際上就是物件的複製。

user obj1=new user("kim","luo",1000.0m);

user obj2;

obj2=obj1.clone();

shallow淺複製:只是複製頂級物件

public class user:icloneable

}相當於

public class user:icloneable

}deep 深複製:複製物件和子物件

6.string相關

string 是個不可變物件。字串連線操作"+"並不改變當前字串,只是建立並返回新的字串,速度慢,而stringbuilder類,卻不一樣,我們主要使用他來進行字串的連線操作,速度非常快。

7。字串駐留

string str1="abc";

string str2="abc";

實際上str1和str2在記憶體中是共享同乙個記憶體位址的,而不是分別占用一塊記憶體位址,這個原因是由於hash表。當你生成乙個新的字串的時候它會先查詢在系統記憶體裡有沒有相應的字串,如果有它就不會去新分配一塊空間。以達到節省記憶體空間的目的。

但是這種情況就不一樣了:

string str1="abc";

string str2="a";

string str3="bc";

string str4=str2+str3;

那麼str1和str4雖然輸出都是abc,但是它們在系統中不是共用同一塊記憶體。但是為了達到這個效果

就是讓它們共用同一塊記憶體。就可以呼叫這2個方法:public static intern(string str);public static isintern(string str)來完成。

C 小技巧總結

net中的datetime結構類中的minvalue和maxvalue有時會引發乙個異常,那就是日期溢位的問題,您輸入的日期必須介於 1753 年 1 月 1 日到 9999 年 12 月 31 日之間,而datetime.minvalue實際上不是1753 年 1 月 1日,而是0000年 月 日...

C 技巧總結 1

1.usecontrol頁面在使用的時候,是沒有showdialog功能的。2.列表在潘頓是否為空的時候可以直接判斷列表元素的數量是否為零。3.foreach迴圈遍歷的時候,要模擬這個迴圈完整的執行過程,在不容易出錯,否則容易出現邏輯錯誤。4.在例項乙個物件時,要確認是否有值 在例項化後,也要確定是...

C 除錯技巧總結

1 條件中斷 for inti 0 i 100 i 第一種方法 執行輸出要i等於50,當開始執行for迴圈時,直接將i的值改為49,然後在執行。第二種方法 對if i 50 斷點執行進行條件設定為 i 50,然後按f5直接到條件i為50,則進入輸出語句 或者設定命中次數,選擇中斷,條件命中次數等於4...