Effective C#原則18:實現標准的處理(Dispose)模式(2)
通過實現IDisposable 接口,你寫成了兩件事:第一就是提供了一個機制來及時的釋放所有占用的托管 資源(譯注:這裡就是指托管資源,當實現了這個接口後,可
Effective C#原則17:裝箱和拆箱的最小化(3)
Person是一個值類型數據,在存儲到ArrayList之前它被裝箱 。這會產生一個拷貝。而在移出的Persone對象上通過訪問屬性做一些修改時, 另一個拷貝
Effective C#原則16:垃圾最小化(1)
圾回收器對內存管理表現的非常出色,並且它以非常高效的方法移除不再 使用的對象。但不管你怎樣看它,申請和釋放一個基於堆內存的對象總比申請和 釋放一個不基於堆內存
Effective C#原則16:垃圾最小化(2)
當你第一次申請黑色畫刷時,Brushes類就會創建它。然而 Brushes類就保留一個單一的黑色畫刷的引用句柄,當你再次申請時它就直接返 回這個句柄。結果就是
Effective C#原則15:使用using和try/finally來做資源清理(1)
使用非托管資源的類型必須實現IDisposable接口的Dispose()方法來精確的 釋放系統資源。.Net環境的這一規則使得釋放資源代碼的職責是類型的使用
Effective C#原則15:使用using和try/finally來做資源清理(2)
當你在一個函數內使用一個可處理對象時,using語句是最簡單 的方法來保證這個對象被恰當的處理掉。當這些對象被分配時,會被編譯器放到 一個try/finall
Effective C#原則15:使用using和try/finally來做資源清理(3)
每一個using語句 生成了一個新的嵌套的try/finally塊。我發現這是很糟糕的結構,所以,如果 是遇到多個實現了IDisposable接口的對象時,我
Effective C#原則14:使用構造函數鏈(1)
寫構造函數是一個反復的工作。很多開發人員都是先寫一個構造函數,然後 復制粘貼到其它的構造函數裡,以此來滿足類的一些重載接口。希望你不是這樣 做的,如果是的,就
Effective C#原則14:使用構造函數鏈(3)
不同 之處就是編譯器沒有生成對基類的多重調用,也沒有復制實例變量到每一個構造 函數內。實際上基類的構造函數只是在最後一個構造函數裡被調用了,這同樣很 重要:你
Effective C#原則18:實現標准的處理(Dispose)模式(3)
如果派生類有另外 的清理任務,就讓它實現Dispose方法:public class DerivedResourceHog : MyResourceHog{
Effective C#原則12:選擇變量初始化而不是賦值語句(2)
你創建一個新的MyClass對象時,特別指定集合的大小,你 創建了兩個數組列表。其中一個很快成為垃圾對象。初始化器在所有的構造函數 之前會執行,構造函數會創建
Effective C#原則11:選擇foreach循環(3)
(譯注:這樣看上去雖然代碼很多,但我覺得 ,只要是程序員都可以一眼看出這是個三維數組的循環,但是對於foreach,我 看沒人一眼可以看出來它在做什麼! 個人
Effective C#原則8:確保0對於值類型數據是有效的(3)
首先,Equals()決不應該拋出異常,這感覺不大好。兩個變 量要麼相等,要麼不等;沒有其它失敗的余地。直接為所有的失敗返回false, 例如null引用或者
Effective C#原則9:明白幾個相等運算之間的關系(1)
明白ReferenceEquals(), static Equals(), instance Equals(), 和運算行 符==之間的關系。當你創建你自己的
Effective C#原則9:明白幾個相等運算之間的關系(2)
個示例代碼展示的兩個方法是我還沒有討論 的:操作符==()和實例的Equals()方法。我會詳細的解釋這兩個,但我還沒有准 備結束對靜態的Equals()的討
Effective C#原則6:區別值類型數據和引用類型數據(3)
擾亂了很多已經存在並使用了你設計的結構的代碼。返回 值類型的變為返回引用類型。參數也由原來的值傳遞變為現在的引用傳遞。下面 代碼段的行為將受到重創:Emplo
Effective C#原則4:用條件屬性而不是#if預編譯塊(3)
Conditional屬性會告訴C#編譯器,這個方法只在編譯環境變量 DEBUG有定義時才被調用。同時,Conditional屬性不會影響CheckState
Effective C#原則3:選擇is或者as操作符而不是做強制類型轉換(3)
兩種轉換都失敗了。但是我告訴過你,強制轉化可以在用戶定義 的類型上完成。你應該想到強制轉化會成功。你是對的--(如果)它們跟像你想的 一樣是會成功的。但是轉換