­

關於c#知識的學到的新知識點

  • 2022 年 2 月 23 日
  • 筆記

開頭:對這段時間學習的小知識點做一個整理。希望自己能理清思路。當然如果能幫到大家那就更好了。

 

1.判斷寫法

!True=false

思考:以前判斷一直寫if(布爾變數==false),今天看到這個,才知道if(布爾變數==false)就是!布爾變數if(布爾變數==false)我這麼寫有點脫褲子放屁了。

 

2.List[ ]前要add先添加對象地址

思考:我一直以為list沒add前,獲取list[i]的不行的,但賦值list[i]是可以的。直到今天試了才發現,若下標地址沒有事先add賦值,是無法使用[ ]的。一番思考才發現list是順序存儲,不支援隨意插入。

 

3.語法糖

就相當於漢語里的成語。即,用更簡練的言語表達較複雜的含義。在得到廣泛接受的情況之下,可以提升交流的效率。例:i++是i=i+1的語法糖

思考:以前就知道語法糖這個詞,一直不懂什麼意思,今天一查百度才知道原來是類似於簡寫的東西。知乎第一名寫得很好,很好懂。

 

關鍵字學習

4.params關鍵字

概念:可變長參數,是在聲明方法時參數類型或者個數不確定時使用

思考:新學的關鍵字。只支援最後一個是一維數組的形參。

例:不加params 

static int Add3(int[] array)

int[] Array = new int[] {1,2,3 };

int sum3 = Add3(Array);//只能傳送數組

 

加上params

static int Add3(params int[] array)

int sum3 = Add3(1,2,3 );//可以傳遞任意個個數的參數

 

 

5.sealed關鍵字

概念:此修飾符會阻止其他類()從該類繼承。

思考:沒啥好說的,封閉類無法被其他類繼承,封閉方法無法被其他類重寫此方法

 

6.readonly關鍵字

概念:只讀欄位,就是說在程式運轉過程中,程式中能夠讀取這個欄位的值,而不能修正它的值。在C#中能夠運用readonly關鍵詞來界說一個只讀欄位。

 

7.Dynamic概念:

dynamic的出現讓C#具有了弱語言類型的特性。編譯器在編譯的時候不再對類型進行檢查,編譯期默認dynamic對象支援你想要的任何特性。比如,即使你對GetDynamicObject方法返回的對象一無所知,你也可以像如下那樣進行程式碼的調用,編譯器不會報錯:

dynamic dynamicObject = GetDynamicObject();

感覺和var有點像,但還是有區別的

var:編譯時被替換。實際上是編譯器拋給我們的語法糖,一旦被編譯,編譯器就會自動匹配var變數的實際類型,並用實際類型來替換該變數的聲明,等同於我們在編碼時使用了實際類型聲明。

dynamic:運行時被替換。被編譯後是一個Object類型,編譯器編譯時不會對dynamic進行類型檢查。

 

8.as關鍵字

用於安全強制類型轉換方法,比起(int)轉換更安全,常用語自定義父類與子類的強制轉換
as操作符不會做無關聯的轉換操作,當需要轉化對象的類型屬於轉換目標類型或者轉換目標類型的派生類型時,那麼此轉換操作才能成功,而且並不產生新的對象【當不成功的時候,會返回null】。因此用as進行類型轉換是安全的。