《C 6 0 本質論》 閱讀筆記

2021-09-07 17:58:35 字數 3595 閱讀 5263

閱讀筆記不是講述這本書的內容,只是提取了其中一部分我認為比較重要或者還沒有掌握的知識,所以如果有錯誤或者模糊之處,請指正,謝謝!

對於c# 6.0才有的新語法基本都有標記,開發的時候要注意使用,以免造成不相容現象。

一。第一章 

1.控制台中可以使用,其會在每一次輸入的時候獲取鍵盤輸入的值。可以用console.readkey().keychar獲取輸入的字元。

void usereadkey()

2.c#6.0新語法:$"this is " 可以在大括號中直接輸入變數名呼叫,類似於string.format(),更加簡潔。

void usenewformat()

");}

3.靜態引用 using static system.console; 可以將console.writeline();縮寫成writeline(); 僅能對靜態函式縮寫。

using static system.console;

void usestaticusing()

二。第二章

1.小數字過多時候,直接轉換為字串會丟失精度,使用 string.format("",a);就不會丟失精度。

void usingformatr()

",str);//不會丟失 顯示3.1548976453187989 為什麼會比賦值數值少,因為

}

2.可空修飾符 值型別+? 預設值為null

void usenullable()

3.嘗試轉換 值型別特有 只在可以轉換的時候進行轉換。 

string a = "456789";

string b = "abce456";

int inta=0;

int intb=0;

var boola = int.tryparse(a,out inta);//返回true,inta=456789

var boolb= int.tryparse(b,out intb);//返回false,intb=0

4.溢位檢測 checked{} 當塊內的資料溢位的時候會丟擲錯誤。

checked

5.返回值 default(t) 可以返回任何型別的預設值。

return default(int?);

return default(int);

6.二維陣列 int[,] a=new int[3,4]; console.writeline(a[1,1]);

交錯陣列 int a=,new int };console.writeline(a[1][1]);

7.陣列擴充 array.resize(ref a,100); 將原有陣列a中的內容複製到新陣列中,並且新陣列的長度為100,然後將原有陣列a指向新陣列。

int a = new int[10];//陣列a的長度為10

array.resize(ref a, 100);//陣列a的長度為100

三。第三章

1.數值型資料兩個特殊值:nan not a number(非數值) ,infinty(無窮)

2.在多執行緒中使用i++,i--等自增自減,由於該操作不是原子性操作,可能造成競爭資源。為了防止該現象出現,可以使用system.threading.interlocked.increment(ref i);自增

或者system.threading.interlocked.decrement(ref i);自減

int i = 10;

system.threading.interlocked.increment(ref i);//i=11

system.threading.interlocked.decrement(ref i);//i=10

3. ??操作符 二元操作符號,當左邊的值為null時候取右邊的值。 左邊的值必須是可以為null的,包括引用型別和可空型別。

int? a = null;

int b= a ?? 18;

4.c#6.0新語法 ?. 判斷例項是否為null,如果返回值為值型別會返回值的可空型別。例如new person() ?.age的值是0

5.位運算【!!!!未學明白!!!!】 ^(異或) ,&(同或),|(與非),~(按位取反), 掩碼,位對映

6.預處理

四。第四章

1.命名空間使用別名

using countdowntimer=system.timers.timer;
2.可變引數 :

private static void xianshi(params string str)

}

引數帶params表示該函式是可變引數,可變引數必須是一位陣列,可以接受該型別的值和一維陣列的值。且可變引數必須是引數列表最後乙個引數(僅可以乙個)。

3.可選引數:在引數中可以給引數賦初始值,當沒有輸入該引數的時候,將會使用預設值。

private static void getlist(string wherestr = "", string orderstr = "", string go = "")

3.指定引數名呼叫

五。第五章 類

1。資源**:gc會自動**託管資源。 隱式確定性資源清理 使用終結器 ;顯式確定性資源 使用using(){};

2。自動屬性也可以賦預設值。 public string name="noname";

3.c#6.0 :nameof(《變數》) 取變數名變成字串,可以防止當變數名改變後,忘記修改對應的字串。 語法糖。

4.c#6.0 :支援唯讀屬性的自動實現(賦預設值)

5.物件初始化器 :在已有person類的情況下: person ps=new person();

6.構造器鏈:建構函式1:public employee(string firstname ,string lastname)

建構函式2:public employee(int id,string firstname ,string lastname):this(firstname,lastname);

建構函式2使用了建構函式1的方法,形成構造鏈。

7.靜態建構函式:在類被首次訪問的時候執行。

8.靜態屬性:靜態字段可以使用屬性實現。

9.靜態類:編譯器會自動標記為abstract和saled ,所以不可以繼承。 靜態類中例項方法是沒有意義的。

10.分部類:partial class person{} ;分部類只允許在同一程式集中實現。分部類需要宣告方法才可以呼叫,並且分部方法之前要加partial,分部方法只能返回void,且不允許使用out,可以使用ref。

建立:選中取消:

原生js: document.getelementbyid("ck").checked = true[false];

jquary: $("#ck").attr("checked", true[false]);

獲取是否選中:

原生js:var d = document.getelementbyid("ck").checked;

jquary:var d = $("#ck").is(":checked");

《C 6 0 本質論》 閱讀筆記

閱讀筆記不是講述這本書的內容,只是提取了其中一部分我認為比較重要或者還沒有掌握的知識,所以如果有錯誤或者模糊之處,請指正,謝謝!對於c 6.0才有的新語法基本都有標記,開發的時候要注意使用,以免造成不相容現象。一。第一章 1.控制台中可以使用,其會在每一次輸入的時候獲取鍵盤輸入的值。可以用conso...

C 6 0本質論(繼承)

6.1.2 protected 6.1.3 聚合 6.1.4 密封類 6.2 基類的重寫 6.3 抽象類 6.4 system.object 6.5 is as操作符 6.1.1.1 隱式轉換操作符 6.1.1.2 顯式轉換操作符 public class person public string ...

C 6 0本質論(值型別)

8.2 裝箱與拆箱 8.3 列舉 可以包含字段 屬性 方法 構造器 當使用有後備欄位的屬性定義值型別並需要初始化時 不允許字段初始化器,即直接宣告時賦值複製 int number 42 object thing double bignumber thing number 裝箱 error,不能直接拆...