改善C 程式 的N個建議 6 10

2022-01-29 15:55:08 字數 2069 閱讀 9968

建議6:分清readonly和const的使用方法.

首先區分他們的各自特點.

readonly:執行時常量.

const:編譯期常量(決定了它肯定是靜態的),只能修飾基元型別(string 也是屬於基元型別),和列舉型別.

或許有人會問了,執行時常量和編譯期常量有什麼區別呢?那就先看一下**

//

**片段

public

static

readonly

int readonlyvar = 100

;public

const

int constvar = 99

;console.writeline(readonlyvar.tostring());

console.writeline(constvar.tostring());

編譯之後:

public

const

int constvar=0x63

;public

readonly

intreadonlyvar;

console.wrintline(

this

.readonlyvar.tostring());

console.wrintline(

this.0x63.tostring());

編譯後可以看到呼叫constvar的地方都是被」0x63」代替.而readonlyvar還是變數名.

執行時常量是在程式執行才被取值,執行時常量在產生il時是產生該常量的引用.

編譯期常量是在編譯期就取值.

使用const的環境:系統中對於某個值是永恆不變的.比如.net framework 的math.pi ( 3.14159) .(注意:如果修改它的值之後,引用它的專案都要重新編譯).

使用readonly的環境:物件需要一次賦值,其生命週期內不變的常量.

建議7:將0作為列舉的預設值.

public

enum

week

此條建議為了week在沒賦值的時候,取預設值就為」0」.這條處理方式更好,只是種較良的改善.

建議8:避免給列舉型別的元素提供顯式的值

我個人不太贊同此條建議,我覺得為其顯式賦值,**看起來一目了然.

建議9:必須知道如何過載運算子.

比如salary(薪水)類,如何讓兩個salary相加?

public

class

salary

public

static salary operator +(salary s1, salary s2)

}

這樣就可以這樣呼叫了:

salary s1 = new salary() ;

salary s2 = new salary() ;

salary s3 = s1 + s2;

這是c#開發的基礎知識,或許它不常用,但是必須知道.

建議10:必須知道如何實現模擬較器

所謂的比較器就只是乙個介面,也只需要實現乙個方法(public int compareto(object obj)).實現了比較器有什麼用呢?除了顧名思義的可以比較兩個例項的大小.還可以用來排序(比如是list集合,就直接呼叫.sort()方法就可以了.方便至極.定義salay class:

public

class salary : icomparable

public

intcompareto(salary obj)

else

if (this.rmb ==obj.rmb)

else

}}

呼叫:

listsalarys = new list();

for (int i = 0; i < 5; i++)

;salarys.add(salary);

}salarys.sort();

foreach (var item in

salarys)

排序就變成如此簡單.

改善C 程式的157個建議(1)

2.使用預設轉型方法 3.區別對待強制轉型與as和is 1 避免裝箱 什麼是裝箱?指將乙個值型別隱式的轉換為object型別。裝箱為什麼會帶來效能損耗?因為它需要完成下面三個步驟 1 會為值型別在託管堆中分配記憶體。除了使用值型別本身所分配的記憶體空間外,記憶體總量還要加上型別物件指標和同步塊索引所...

改善c 程式建議 其他

1 c 編寫死迴圈一般使用 while 1 2 關鍵字static有三個明顯的作用 1 在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。2 在模組內 但在函式體外 乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是乙個本地的全域性變數。3 在模組內,...

改善C 程式的157個建議 讀書筆記

1.正確操作字串 最大的體會是程式的效率是好習慣帶出來的。多用stringbuilder和string.format吧。2.使用預設轉型方法 盡量使用系統原有方法,至於如何找到方法?就問度娘哈。3.區別對待強制轉換與as和is 反正我是慎用了。基本原則能用第一,效率第二。4.tryparse比par...