真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#語言習慣-創(chuàng)新互聯(lián)

一、使用屬性而不是可訪問的數(shù)據(jù)成員

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、遼中網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5技術、商城開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為遼中等各大城市提供網(wǎng)站開發(fā)制作服務。

二、使用運行時常量(readonly)而不是編譯時常量(const)

1. C# 有兩種類型的常量:編譯時常量和運行時常量。

2.盡量使用運行時常量,而不是編譯時常量。

C# 語言習慣

        /// 
        /// 編譯時常量        /// 
        public const int Num = 100;        /// 
        /// 運行時常量        /// 
        public static readonly int Year = 2017;

C# 語言習慣

3.編譯時常量只能用于數(shù)字和字符串,運行時常量也是一種常量,因為在構造函數(shù)執(zhí)行后它不能被再次修改。

4.const 比 readonly 效率高,但靈活性低。

三、推薦使用 is 或 as 操作符而不是強制類型轉換

1.as 比強轉更加高效、安全。

2.as 操作符不能配合值類型使用,因為值類型永遠不可能為 null。

四、使用 Conditional 特性而不是 #if 條件編譯

五、為類型提供 ToString() 方法

1.應該為類型提供一個合適的 ToString() 版本,否則使用者會根據(jù)類的一些屬性來自行構造并用于顯示。

2.object 默認提供的 ToString() 方法會返回類型的完整名稱,意義不大。如:System.Drawing.Rect。

3.重寫所有類型的 ToString(),可以簡單明了的顯示對象的摘要信息。

六、理解幾個等同性判斷之間的關系

1.系統(tǒng)提供 4 種函數(shù)判斷兩個對象是否“相等”。

C# 語言習慣

2.對于前兩種方法,我們永遠不要重新定義,我們通常要重寫 Equals 方法。

3.重寫 Equals 的類型也要實現(xiàn) IEquatable,如果是結構體的話需要實現(xiàn) IStructuralEquatable。

4.引用同一個 DataRow,會認為相等,如果想比較內(nèi)容的話,而不是引用地址,那么就應該重寫 Equals() 實例方法。

5.Equals() 實例方法的重寫原則:對于所有的值類型,都應該重寫 Equals() 方法,對于引用類型,如果不能滿足需要時才去重寫該方法。重寫該方法的同時也需要重寫 GetHashCode() 方法。

6.operator == ():只要創(chuàng)建的是值類型,都必須重新定義 operator == (),因為系統(tǒng)默認是通過反射來比較兩個值是否相等,效率過低。

七、理解 GetHashCode() 的陷阱

1.對于我們實現(xiàn)的大多數(shù)類型來說,避免實現(xiàn) GetHashCode()。

2.GetHashCode() 的重載版本必須遵循以下三條原則:

(1)如果兩個對象相等(由 operator == 定義),那么它們必須生成相同的散列碼。

(2)對于任何一個對象 A,A.GetHashCode() 必須保持不變。

(3)對于所有的輸入,散列函數(shù)應該在所有整數(shù)中按照隨機分布生成散列碼。

八、推薦使用查詢語法而不是循環(huán)

示例:

C# 語言習慣

            //1.使用循環(huán)
            var foo = new int[100];            for (int i = 0; i < 100; i++)
            {
                foo[i] = i * i;
            }            //使用查詢語法
            var foo2 = (from n in Enumerable.Range(0, 100) select n * n).ToArray();

C# 語言習慣

1.有些方法語法沒有對應的查詢語法,如 Take、TaskWhile、Skip、SkipWhile、Min、Max 等,就需要使用方法語法。

九、避免在 API 中使用轉換操作符

十、使用可選參數(shù)減少方法重載的數(shù)量

1.對于程序集的第一次發(fā)布,可以隨意使用可選參數(shù)和命名參數(shù)。而在進行后續(xù)發(fā)布時,必須為額外的參數(shù)創(chuàng)建重載。這樣才能保證現(xiàn)在的程序仍能正常運行。此外,在任何的后續(xù)發(fā)布中,都要避免修改參數(shù)的名稱,因為參數(shù)名稱已經(jīng)成為公有接口的一部分。

十一、理解短小方法的優(yōu)勢

1.我們最好盡可能地編寫出最清晰的代碼,將優(yōu)化工作交給 JIT 完成。一個常見的錯誤優(yōu)化是,我們將大量的邏輯放在一個函數(shù)中,以為這樣可以減少額外的方法調用開銷。

C# 語言習慣

        public string Test(bool isTrue)
        {            var sb = new StringBuilder();            if (isTrue)
            {
                sb.AppendLine("A");
                sb.AppendLine("B");
                sb.AppendLine("C");
            }            else
            {
                sb.AppendLine("E");
                sb.AppendLine("F");
                sb.AppendLine("G");
            }            return sb.ToString();
        }

C# 語言習慣

在第一次調用 Test 方法時, if-else 的兩個分支都被 JIT 編譯,而實際上只需要編譯其中一個,修改后:

C# 語言習慣

        public string Test2(bool isTrue)
        {            var sb = new StringBuilder();            if (isTrue)
            {                return Method1();
            }            else
            {                return Method2();
            }
        }

C# 語言習慣

現(xiàn)在進行了方法拆分,這兩個方法就可以根據(jù)需要進行 JIT 編譯,而不必第一次進行全部編譯。

2.可以將 if-else 分支中有超過幾十條的語句,或者某個分支專門用來處理程序發(fā)生的錯誤,或者 switch 語句中的每個 case 中的代碼進行選擇性的提取。

3.短小精悍的方法(一般包含較少的局部變量)會讓 JIT 更容易地進行寄存器選擇工作,即選擇哪些局部變量放在寄存器中,而不是棧上。

4.盡量編寫短小精悍的方法。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


當前題目:C#語言習慣-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/ccsseh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部