閱讀筆記不是講述這本書的內容,只是提取了其中一部分我認為比較重要或者還沒有掌握的知識,所以如果有錯誤或者模糊之處,請指正,謝謝!
對於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()2.可空修飾符 值型別+? 預設值為null",str);//不會丟失 顯示3.1548976453187989 為什麼會比賦值數值少,因為
}
void usenullable()3.嘗試轉換 值型別特有 只在可以轉換的時候進行轉換。
string a = "456789";4.溢位檢測 checked{} 當塊內的資料溢位的時候會丟擲錯誤。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
checked5.返回值 default(t) 可以返回任何型別的預設值。
return default(int?);6.二維陣列 int[,] a=new int[3,4]; console.writeline(a[1,1]);return default(int);
交錯陣列 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;3. ??操作符 二元操作符號,當左邊的值為null時候取右邊的值。 左邊的值必須是可以為null的,包括引用型別和可空型別。system.threading.interlocked.increment(ref i);//i=11
system.threading.interlocked.decrement(ref i);//i=10
int? a = null;4.c#6.0新語法 ?. 判斷例項是否為null,如果返回值為值型別會返回值的可空型別。例如new person() ?.age的值是0int b= a ?? 18;
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,不能直接拆...