C#學習記錄:編寫高品質代碼改善整理建議4-8

來源:互聯網
上載者:User
4、TryParse比Parse好

下面的TryParse的方法定義

public static bool TryParse(string s, out Double result);

Parse如果轉換失敗會報錯,但是TryParse有傳回值可以判斷是否轉換成功

string str1 = "abfc12";if(double.TryParse(str1, out double dou1)){    Console.WriteLine(dou1);}

5、建議使用int? 來確保實值型別也可以為null

如果有需要實值型別為空白,我們可能會使用一個特殊值例如 -1 來判斷int是不是為空白,最好改成int?類型,判斷是否為null

Nullable<int> i1 = 4;// i2 和 i1 的定義方式一樣 只是寫法不同 下面的int?是一個文法糖int? i2 = null;int i3 = 0;//int類型可以預設轉為int?類型i2 = i3;//int?類型需要強轉成int類型,如果是null則變為0i3 = (int)i2;

6、區別readonly和const的使用方法

簡單區別就是const效率高,readonly靈活性高

const是編譯器常量,readonly是運行時常量

const int constNum = 1;public string name;public int age;public FirstType(){    name = "aa";    age = constNum;    age = 1;}//使用以上代碼測試,下面的編譯成的IL代碼  IL_0000:  ldarg.0  IL_0001:  call       instance void [mscorlib]System.Object::.ctor()  IL_0006:  nop  IL_0007:  nop  IL_0008:  ldarg.0  IL_0009:  ldstr      "aa"  IL_000e:  stfld      string CSharpSuggest.FirstType::name  IL_0013:  ldarg.0  IL_0014:  ldc.i4.1  IL_0015:  stfld      int32 CSharpSuggest.FirstType::age  IL_001a:  ldarg.0  IL_001b:  ldc.i4.1  IL_001c:  stfld      int32 CSharpSuggest.FirstType::age  IL_0021:  ret

可以看出13,14,15 和 1a,1b,1c是一樣的,所以 age = constNum;和 age = 1;是等效的 所以效率最高

const只能修飾基元類型、枚舉類型或字串類型,readonly則沒有限制

const天然是static 不能再增加static

readonly的值一般在建構函式裡面賦值,每一個類的對象都可以擁有不同的readonly值,但由於const是靜態,所以所有的類該值都是一樣的

書中有上面這一句話,我一直有個疑問,在類內賦值和建構函式賦值有什麼區別,網上沒搜到,反編譯出來的IL代碼僅僅是變數定義的順序區別,如果有知道請告知。。

7、將0作為枚舉的預設值

我理解的是如非必要,不要更改枚舉的數值,可能會出現意料之外的結果

8、避免給枚舉類型元素提供顯示的值

原因同上

相關文章:

C#學習記錄:編寫高品質代碼改善整理建議1-3

C#學習記錄:編寫高品質代碼改善整理建議9-15

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.