1. 程式人生 > >C# 知識點總結

C# 知識點總結

程式碼原則

1.職責單一原則

2.列舉型別最好不要用 數字表示


初級
1.抽象類,介面的區別
抽象類需要被繼承,不能例項化,子類必須實現其抽象方法,抽象方法沒有方法體,是為了子類不要忘記寫某個方法而出現的
介面看成是抽象類的補充(子類實現基類中的所有方法,還可以選擇性的實現某些功能)
override :抽象方法,子類要必須重寫。虛方法,子類可以不必重寫虛方法

2.序列化
序列化通俗的講就是將一個物件轉換成一個位元組流的過程,這樣就可以輕鬆的儲存在磁碟檔案或資料庫中。反序列化就是序列化的逆過程,就是將一個位元組流換回原來
的物件的過程。
對於序列化的主要用途有:

1)、將應用程式的狀態儲存在一個磁碟檔案或資料庫中,並在應用程式下次執行時恢復狀態。例如, Asp.net 中利用序列化和反2)、序列化來儲存和恢復會話狀態。
3)、一組物件可以輕鬆複製到Windows 窗體的剪貼簿中,再貼上回同一個或者另一個應用程式。
將物件按值從一個應用程式域中傳送到另一個程式域
並且如果把物件序列化成記憶體中的位元組流,就可以利用一些其他的技術來處理資料,例如,對資料進行加密和壓縮等。

總結:
a,如果是json格式,NewtonSoft.Json最通用(可以處理迴圈引用),雖然它不是速度最快的。

b,如果是xml格式,就使用.net自帶的XmlSerializer。將物件序列化成XML檔案

c,如果是二進位制格式,就使用.net自帶的BinaryFormatter,雖然Protobuf速度很快,但是要加序號很麻煩。

3.XML操作

4.委託和事件的關係
委託是一種型別(可以看出是方法的模板),事件可以看成是委託的一種特殊的例項化;
事件只能在其定義類的內部呼叫,在外部提供介面供使用者繫結方法。而委託可以在外部被例項化,呼叫。這就是事件與委託物件的唯一區別
委託主要是用來解耦(程式開發要秉承著可擴充套件思想),無委託無非同步。

中級
1.檔案操作 (Excel檔案操作)
2.檔案上傳(web api 檔案上傳,asp.net 檔案上傳,WinForm檔案上傳)
3.登入防篡改身份驗證
4.Web api 介面鑑權認證Token
5.鐳射推送
6.泛型
7.Linq,lambda表示式
8.MVC
9. web api
10.EF 的Code First和 DB First
11.反射應用

高階

 

幫助類
log --日誌類
JSON.NET --實現json的序列化和反序列化,推薦使用NewtonSoft
NewtonSoft.Json --實現json的序列化,推薦
System.Web.HttpUtility --用於提供URL字串編碼和解碼