天天看點

00-C#環境快速搭建和基礎文法

1 如何學習上位機

00-C#環境快速搭建和基礎文法

2 .NET開發環境的搭建和使用

2.1 菜單欄

【檔案】–》建立項目–>找到我們需要的項目類型

在建立項目視窗中,我們建立的項目要求可以在這裡選擇:

(1)版本的選擇:建議大家選擇4或者4.6

(2)選擇開發語言:一般都是C#

(3)項目類型:初學階段一般都用"控制台"程式。僅僅是學習需要。

(4)項目的名稱。要有意義。

(5)位置:項目所有檔案的儲存位置。建議不要使用中文目錄。

(6)解決方案名稱:預設和項目名稱一樣。

最後确定即可。
           

【視圖】–>可以顯示各種視窗。

【調試】–>程式運作的入庫(調試程式的入庫)

調試:也就是嘗試編譯和運作程式。調試主要是我們開發階段的選擇,用來觀察我們編寫的程式。

F5鍵必須會使用。

【工具】–>選項,在這裡可以對開發環境全局進行配置。

2.2 工具欄

【儲存】:是對目前打開的檔案儲存。Ctrl+S随時儲存。

【全部儲存】:是對目前項目中打開的檔案全部儲存。

提示:記住Ctrl+k+D 目前類的所有代碼自動對齊!

【Debug】:調試選項,開發中我們一般都用這個。

【Release】:釋出選項,所有項目開發和調試完畢才使用的選項。

【啟動】:啟動編譯器,編譯目前縮寫的代碼,生成相關的檔案。

【注釋/撤銷注釋】:注釋就是對代碼的說明。注釋是不參與程式編譯。

2.3 功能視窗

【工具箱】:是在Windows程式中或者WebForm程式中,用來拖放控件的。

【調試相關視窗】:主要是程式調試中我們觀察資料用的。

PS:局部變量等視窗,需要在啟動調試後,通過“調試”–>“視窗”再找到對應的視窗選項。

【解決方案】:主要提供程式的統一編譯。

【屬性視窗】:主要是對可視化的窗體和控件屬性進行設定,我們使用者設定完屬性後,

背景自動生成相關代碼。

2.4 控制台項目結構

1.解決方案名稱,一個解決方案裡面可以有多個項目。

2.目前項目結構:

(1)Properties檔案夾:(屬性檔案夾)

AssemblyInfo.cs檔案:裡面的配置資訊主要是用來儲存項目的版權資訊。

PS:在C#項目中,我們代碼檔案都是以.cs結尾。

(2)Program.cs 檔案: 是項目的啟動入口檔案。

(3)我們自己添加的其他類檔案(這個是我們後續學習的重點)

3.引用:就是我們目前項目所需要的.NET底層子產品。

因為底層子產品已經被微軟工程師封裝好了,我們隻需要使用即可。

如果我們自己開發中,需要一些内容,但是沒有自動引入,需要我們自己添加。

不同項目所需要的引用是不同的。

引用隻是說我們開發目前項目可以使用哪些内容(子產品)。

4.命名空間

一個子產品可以包含若幹命名空間。

我們在類中想使用哪些内容,必須引入對應命名空間。

命名空間的概念:微軟底層的類或我們自己添加的類,在實際開發中會很多,為了管理我們把不同的類放到不同的命名空間裡面。

使用using關鍵字引入,引入後,我們可以直接使用這個命名空間下面的所有類。

如果不使用using引入命名空間,那麼我們使用類的時候,就需要通過“命名空間.類名”方式使用。

//項目的命名空間,預設和項目名稱一樣
namespace MyFirstApp
{
  
}

一個類必須要包括在指定命名空間裡面。

class Program

{
    
}
 //class表示一個類,我們開發者寫的代碼,都是在class裡面,class是我們程式的基本單元。

 static void Main(string[] args)
{

}

//程式的入口方法,也就是程式啟動的時候,首先執行的内容。

這個方法是靜态的,不要修改。
           

控制台類Console類。

Console.WriteLine(“在這裡寫上需要輸出的内容”);

Console.ReadLine()擷取使用者通過控制台輸入的内容。

5.C#程式編寫的基本規範

1.在C#中嚴格區分大小寫。

2.每條語句寫完後,要用分号結尾。

3.在代碼編寫中,一定要使用“英文半角”
           

2.5 .NET項目編譯、運作過程

1.非托管代碼

00-C#環境快速搭建和基礎文法

特點:程式必須依賴于作業系統,而且編譯器生成的程式檔案包含的僅僅是适用于特定CPU架構的機器指令。

不足:不同的作業系統需要單獨編寫代碼,重複低效。

2.托管代碼

最早就是Java跨平台設計思想,.NET從2003年開始,而且發展更新迅速。

00-C#環境快速搭建和基礎文法

特點:

(1)開發者編寫的代碼編譯後,不依賴于作業系統和特定的CPU架構機器指令,而是依賴于一種

中間的,在各個作業系統上都能執行的代碼,這種代碼Java裡面叫做ByteCode(位元組碼),.NET裡面我們稱之為MSIL指令(微軟中間語言)。


(2)不管是Java的位元組碼還是.NET的**MSIL**指令仍然需要最終被翻譯成CPU能夠執行的機器指令。這個功能是由一個運作在特定作業系統上的軟體來完成,這個軟體我們稱之為“**虛拟機**”。.NET Framework類庫,後面我們會慢慢學習,CLR這個我們也會介紹。
           

MSIL檢視工具(IL DASM)

VS2010階段,安裝目錄裡面就有。

VS2013之後,我們需要自己查找,在安裝目錄裡。
           

exe檔案:

編譯後生成的可執行檔案,裡面是IL指令。項目釋出或給使用者可以直接運作的程式。
           

dll檔案:

編譯後生成的動态連結庫檔案。裡面也是IL指令。

pdb檔案:

Program Debgu DataBase(程式調試資料庫)檔案。

包含了編譯後程式指向源代碼的位置資訊,用于調試的時候定位源碼,友善調試。
           

vshost.exe檔案

用于提高調試效率的宿主程序。

VS運作調試的時候,其實是打開的這個檔案。這個程式可以讓VS跟蹤調試資訊。
           

vshost.exe.manifest

是一個XML檔案,用于COM類,接口庫的綁定和激活,這些資訊以前是在注冊中。
           
00-C#環境快速搭建和基礎文法

2.6 其他小技巧強調

1.Main方法

(1)作用:程式入口方法,從這裡開始運作。

(2)要求:一個程式隻能有一個Main()方法,首字母要大寫、傳回值為void或者int、指令行參數是可選的。

(3)Main方法的形式

形式1: static void Main(string[] args){ }

形式2:  static int Main(string[] args){ }

形式3: static void Main(){ }

形式4:  static int Main(){ }
           

2.C#中的注釋

(1)作用:用來說明代碼的作用,幫助程式員了解程式。注冊是不參與編譯。

(2)單行注釋、多行注釋、**文檔注釋**()三個斜線
           

3.代碼折疊器region

作用:将多行代碼折疊,使得代碼可讀性增強,容易查詢。

要求:必須成對出現。
           

例:

00-C#環境快速搭建和基礎文法

4.程式中編寫問題小節

(1)程式語句:

大小寫:C#嚴格區分大小寫,比如Class和class是完全不一樣的。

位置:類必須在指定的命名空間中,方法、屬性、字段的定義,必須放到類中。

普通語句的執行,必須放到方法中。
           

(2)引号

使用雙引号"",要求英文半角,并且成對出現。

字元串的定義必須使用雙引号。

帶空格的字元串"  "和不帶空格的字元串""是完全不一樣的。
           

(3)注釋

關鍵性的語句需要添加注釋。

類名稱前應該使用多行注釋(文檔注釋),說明類的功能和使用方法。

複雜方法前面應該使用文檔注釋,說明方法的功能,參數的含義,傳回值資訊等。

文檔注釋一方面給我們開發者日後做參考,還有就是給調用者提供智能提示。
           

2.7 通過執行個體比較程式編寫的兩種思想

1.程式的基本概念

(1)生活化了解:人們完成一件事情,并得到一個結果,從做事開始到得到結果的步驟,就是程式。

(2)好處:對于重複性的事情,規定好步驟,孰能生巧,提高效率。

(3)計算機程式:就是人們通過計算機完成一個或多個任務,這個任務需要編寫計算機能夠執行的指令。這些指令就是程式。

程式語言:二進制機器指令;彙編語言;C語言;C++;Java、C#...

 所有進階語言,最終都要被翻譯成二進制指令(1,0)才能被計算機執行。

 進階語言到低級語言的“翻譯官”,已經由語言開發工程師完成了。
           

2.程式編寫的兩種思想PK

面試題目:請基于OOP,完成一個簡單的電腦。(A,B)
           

(1)面向過程(Procedure Oriented)是一種以“過程/流程”為中心的程式設計思想。

方法:分析問題,總結步驟,按照一定的流程完成任務。

 缺點:随時項目規模增大,業務複雜度提高,基于一個個函數編寫,會變得非常雜亂!

       後續維護幾乎無法完成,況且任務本身也不見得能完成。

 适合:嵌入式開發,比如C語言。需要和硬體互動。
           

(2)面向對象(Object Oriented,簡稱OO)是一種以“事物/對象”為中心的程式設計思想。

思考:當然任務大緻有幾個?我們根據需求分析,知道目前需要完成兩個數相加減運算任務

       我們設計一個電腦對象,然後把兩個任務封裝成方法。然後,我們在主程式中,

       通過對象去完成這個運算的任務。


 好處:我們把需要的任務,單獨指派特定的對象,可以由更專業的人去完成,我們可以不用關心


       這個對象怎麼實作的,我們隻管使用!(封裝) 

       對象的設計者,可以更集中的研究對象内部的實作,對象的調用者,隻關心對象的使用。

       而不用關心對象的設計。(高内聚、低耦合)
對于項目後續的更新、維護,基于對象設計程式,會變得非常簡單和友善。


       面向對象的學習需要挺長的一個過程,大家可以慢慢體會。

  适用:各種規模的企業應用管理系統。


 【展示面向過程和面向對象的VS圖解】
           

2.8 面向對象程式設計應該如何學習

1.面向對象三大特性

(1)封裝:隐藏内部實作細節,子產品開發者之關心内部實作,子產品調用者,隻關心接口适用。

好處:安全性保障。(避免代碼外漏)、快速應用、團隊協作。

  應用:類是程式的基本單元。代碼被封裝到類裡面,一個類是一個單元,是一個封裝,方法也是一定程度的封裝,子產品又是對類的封裝。系統也在某些時候也是封裝的展現。
           

(2)繼承:複用技術。

好處:一處更新,處處使用。弊端:關聯會越來越複雜。

 我們自己的編寫的代碼,一般使用繼承關系的并不多。
           

(3)多态

概念:讓一個對象的接口可以根據不同的請求,做出不同的響應。

 應用:繼承多态、接口多态。
           

2.開發者必須要掌握OOP的各種原則

(1)單一職責(對象職責明确原則)

要求:一個對象隻能做好一件事情,必須專注,職責過多,會引起代碼混亂,維護麻煩。

      如果一個類封裝方法或屬性的時候,比較多,就要考慮這些方法屬性是不是屬于這個對象。
           

(2)開放封閉原則(開閉原則)

要求:需求變化時,盡量減少類的修改,而是通過擴充來完成。封閉修改,開放擴充。
           

(3)依賴倒置原則、接口隔離原則、裡氏替換原則。

總結:學好面向對象程式設計,就是要掌握面向對象程式設計的各種原則,方法等指導我們如何寫程式。