第一部分:面向對象 封裝 繼承(里氏轉換) 多態
第二部分:值類型、引用類型、字符串操做
第三部分:集合文件操做
第四部分:正則表達式
第五部分:XML操做
第六部分:委託、事件
第七部分:反射。正則表達式
一、變量的命名 首先咱們要保證的就是變量的名稱必定要有意義(就是咱們看到了變量的名字,就知道變量在這段程序中的做用) Camel:多餘用給變量或者字段命名,第一個單詞的首字母小寫,其他每一個單詞的首字母大寫。 咱們給字段命名,前面必須加下劃線。 _highSchoolStudent Pascal:要求咱們每一個單詞的首字母都要大寫,其他每一個單詞的首字母小寫。 HighSchoolStudent int max= GetMax(); int min= GetMin(); 二、進程 一個應用程序就是一個進程,而一個進程又是由多個線程組成的。 進程幫助咱們在內存中分配應用程序執行所須要的空間。
//存儲着咱們當前正在運行的進程
//Process[] pro = Process.GetProcesses();
//foreach (var item in pro)
//{
// //item.Kill();不試的不是爺們
// Console.WriteLine(item.ProcessName);
//}
//使用進程來打開應用程序
//Process.Start("notepad");//打開記事本
//Process.Start("mspaint");//打開畫圖工具
//Process.Start("iexplore", "http://www.baidu.com");
//Process.Start("calc");//打開計算器
//使用進程來打開文件
//封裝咱們要打開的文件 可是並不去打開這個文件
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\SpringRain\Desktop\打開文件練習.exe");
//建立進程對象
Process pro = new Process();
//告訴進程要打開的文件信息
pro.StartInfo = psi;
//調用函數打開
pro.Start();
Console.ReadKey();編程
----> 咱們能夠經過進程來直接操做應用程序。 三、面向對象複習 類決定了對象將要擁有的屬性和行爲。
class BaseFile
{
//字段、屬性、構造函數、函數、索引器
private string _filePath;
public string FilePath//ctrl+R+E
{
get { return _filePath; }
set { _filePath = value; }
}設計模式
//自動屬性 prop+兩下tab
public string FileName { get; set; }數組
public BaseFile(string filePath, string fileName)
{
this.FilePath = filePath;
this.FileName = fileName;
}ide
//設計一個函數 用來打開指定的文件
public void OpenFile()
{
ProcessStartInfo psi = new ProcessStartInfo(this.FilePath + "\\" + this.FileName);
Process pro = new Process();
pro.StartInfo = psi;
pro.Start();
}
}函數
封裝: --->減小了大量的冗餘代碼 --->封裝將一坨很難理解的功能封裝起來,可是對外提供了一個很簡單的使用接口。咱們會使用就OK。 繼承: --->減小了類中的冗餘代碼 --->讓類與類產生了關係,爲多態打下了基礎。 特性: 單根性:一個子類只能有一個父類 傳遞性:爺爺類 爹類 兒子類 里氏轉換: 一、子類能夠賦值給父類 二、若是父類中裝的是子類對象,則能夠將這個父類轉換爲對應的子類對象 ---->關鍵字 一、is:返回bool類型,指示是否能夠作這個轉換 二、as:若是轉換成功,則返回對象,不然返回null 做用:咱們能夠將全部的子類都當作是父類來看,針對父類進行編程,寫出通用的代碼,適應需求的不斷改變。 多態: --->虛方法 virtual override --->抽象類 abstract override --->接口 interface 四、關鍵字 new 一、建立對象 --->在堆中開闢空間 --->在開闢的堆空間中建立對象 --->調用對象的構造函數 二、隱藏父類的成員 this 一、表明當前類的對象 二、顯示的調用本身的構造函數 base 一、顯示調用父類的構造函數 二、調用父類的成員 五、抽象類實現多態練習 模擬將外部的移動存儲設備插到電腦上進行讀寫數據。 U盤 Read() Write() 移動硬盤 Read(); Write(); MP3 Read(); Write(); PlayMusic(); 手機....平板電腦...... 六、接口 ---->接口是一種能力 ---->接口也是一種規範 ---->若是你繼承了這個接口,就必須按照接口的要求來實現這個接口。 interface I開頭...able結尾 七、石頭剪刀布案例 玩家 --->出拳的方法,是咱們指定的 電腦 --->出拳的方法,隨機的 裁判 --->判斷輸贏或者平手 石頭1 剪刀2 布3 玩家贏:石頭1 剪刀2 =-1 剪刀2 布3 =-1 布3 石頭1=2 平手:玩家-電腦=0; 電腦贏: 八、訪問修飾符 public private internal protected protected internal public:在哪均可以訪問 private:私有的,只能在當前類的內部進行訪問 internal:只能在當前程序集中訪問。 protected:受保護的,能夠在當前類以及該類的子類中訪問 注意點: 一、可以修飾類的訪問修飾符只有兩個:public internal(默認就是internal)。 二、在同一個項目中,public的權限跟internal是同樣的。 三、子類的訪問權限不能高於父類。
一、導入命名空間 命名空間就是類的"文件夾"。類就是"文件夾"中的文件。須要導入命名空間 添加引用: 若是我須要在一個項目中,訪問另外一個項目中的某一個類 --->添加對另外一個項目的引用 --->導入命名空間 二、靜態和非靜態 靜態成員:被static修飾 實例成員:不被static修飾 靜態成員先於實例成員被加載到內存中,只有建立了對象,纔有實例成員。 靜態類中只能存在靜態成員 調用: 靜態成員調用: 類名.靜態成員名; 實例成員調用: 實例名.實例成員;(實例就是咱們的對象) 何時使用靜態? ---->做爲工具類 ---->在整個項目中資源共享,正由於它是資源共享的,因此靜態成員必需要等到整個項目都結束的時候 纔會被資源釋放。 在咱們的項目中應該儘量的少使用靜態成員。 繼承是建立對象的過程。 三、設計模式 ---->單例設計模式 在整個程序中,咱們要保證對象必須是惟一的。 實現: ---->第一步:構造函數私有化 ---->第二步:聲明一個靜態字段,做爲全局惟一的單例對象 ---->第三步:聲明一個靜態函數,返回全局惟一的對象 ---->簡單工廠設計模式 核心:把全部的子類都當作父類來看待 練習: 提示用戶分別的輸入兩個數字: 再輸入運算符:返回一個計算的父類,並調用方法獲得結果。 Add Sub Cheng Chu 建築行業最先應用到設計模式這個概念 一、註冊一個公司 二、招兵買馬 三、投標買地 四、安排施工隊開始施工 五、賣樓 設計模式就是用來專門解決一些特定的問題。 四、類庫 .dll文件,咱們使用類庫來幫助咱們封裝一些經常使用的功能 五、值類型和引用類型 值類型:int double char bool decimal struct enum 引用類型:string 數組 自定義類 接口 委託 值類型的值存儲在內存的棧上,引用類型的值存儲在堆中。 棧上存儲數據的效率要高於堆。 值傳遞:把值類型做爲參數傳遞,把值自己進行傳遞。 注意: ref能夠把值傳遞改變爲引用傳遞。 引用傳遞:把引用類型的值做爲參數傳遞,傳遞的是引用。 六、字符串的學習 重要特性: 不可變性,咱們無論對字符串作什麼操做,都會在內存中產生一塊新的實例。 駐留池 咱們能夠將一個字符串看做是char類型的只讀數組。 GC:Garbage Collection垃圾回收 ,每隔一段時間,會掃描整個內存,發現,若是有的空間沒有被指向。則當即把它銷燬。
一、StringBuilder 它就是拼接字符串的一個工具,拼成完成後,仍是須要將它轉回字符串。 二、ref參數 ref參數側重於將一個值帶到函數中進行改變,再講改變後的值帶出去。ref參數在函數內不用賦值 函數外必須爲ref參數賦值。 三、out參數 四、params可變參數 五、集合的學習 非泛型集合 ArrayList Hashtable 泛型集合 List<T> Dictionary<Tkey,Tvalue> 六、裝箱和拆箱 裝箱:值類型---->引用類型 拆箱:引用類型--->值類型 咱們判斷是否發生了拆箱或者裝箱,首先要判斷這兩種數據類型是否存在繼承關係。 你裝箱的時候拿什麼類型裝的箱,你拆的時候,就得拿什麼類型去拆。 七、List<T>經常使用的函數 Add():添加單個元素 AddRange():添加一個集合 Insert():插入一個元素 InsertRange():插入一個集合 Remove():移除指定的元素 RemoveAt():根據下標移除元素 RemoveRange():移除必定範圍內的元素 ToArray():集合轉換成數組 ToList():數組轉換成集合 八、編碼格式 將字符串是怎樣的形式保存爲二進制。 ascii 256 6000 GB2312 GBK GB18030 ISO Unicode utf-16 utf-8 出現亂碼的緣由:咱們保存這個文件的時候採起的編碼跟打開這個文件的時候採起的編碼格式不一致。 文本文件:拖到txt中還能看得懂得就是文本文件。