C#學習——C#語言

今天開始C#的學習,計劃是在三天內完成《C#入門經典第五版》的學習與理解,該書籍我將放在鏈接之中。
第一章 C#簡介與編寫環境
.NET Framework
.NET Framework 的含義:.NET Framework是Microsoft爲開發應用程序而創建的一個具有革命意義的平臺:1,後續推出的Mono可以在其他操作系統中進行開發;2,並未限制所開發應用程序的類型;3,確保可以運用於各種語言,各種語言之間具有可交互性。
.NET Framework.的內容:.NE T Framework主要包含一個非常大的代碼庫,這個庫分爲很多個不同的模塊,不同操作系統、開發語言可以根據自己的需要選擇對應的模塊。除此之外,公共部分包括:1,通用類型系統(CTS),指定最基礎的數據部分,以便.net在各種語言中進行交互操作;2,公共語言運行庫(CLR),負責管理使用.net庫開發的所有應用程序的執行。
在 .NET Framework中,將C#轉換爲目標操作系統所能理解的語言,主要分爲兩個階段:C#代碼——>編譯爲CIL,存儲到程序集——>JIT編譯器編譯爲本機語言——>託管CLR環境中運行
*1,通用中間語言(CIL)與Just-In-Time編譯器(JIT)
*2,程序集:包含可執行的應用程序文件(.exe),其他程序使用的庫(.dll),元信息(程序集中所包含的數據信息),可選的資源(CIL所使用的其他數據,比如聲音和圖片文件)
鏈接:由於代碼可以不放在一個地方,所以可以將編程工作分解爲一些可管理的塊,讓每個人編寫一小塊代碼。
*3,託管代碼(如C#)與非託管代碼(如C++):是否讓.net自己與操作系統進行交互,即是否能訪問操作系統
*5,垃圾回收(GC):確保應用程序不再使用某些內存時,就會完全釋放這些內存。

需要記住的概念:CLR/CIL/CTS/JIT/GC

C#
來源及特性:從C/C++演化而來,是Microsoft專門爲使用.net平臺而創建的。語法比C++簡單,作用幾乎等同,但只能在標記爲unsafe的代碼中編寫底層代碼。可進行不同應用程序的開發。
本書主要用VS(Visual Studio)開發。關於安裝詳情參見第二章,下載地址參見百度。

第二章 變量、表達式與流程控制
書寫習慣
1,空白、回車或者Tab符統稱爲空白字符,編譯器不會編譯。
2,三種註釋方式://;/**/;///。
3,編譯器區分大小寫。
4,摺疊關鍵字:#region(+解釋),#endregion
5,轉義字符表
轉義字符表
6,

 string name = Console.ReadLine();//輸入
            Console.WriteLine(name);//打印
            Console.ReadKey();//暫停

變量、簡單類型
*1,變量:有名稱與類型的數據塊,由< type >與< name >組成。如string myName。
變量名第一個必須以@或_或字母開頭。
對於同一個類型的變量可以同時聲明,比如: public string a1 = “”, a2 = “”;
*2,簡單類型:組成應用程序中基本構件的類型,沒有子類型或特性,大多數都是存儲數值的。如整數型、布爾類型或者string類型(沒有內存大小限制)。
總體而言,這些簡單類型可以有效的節省空間,比如存儲浮點數的時候,其內存:float < double < decimal。

變量的更多內容
類型轉換
*1,隱式轉換
由A轉換到B,編譯器完成轉換過程。只要A數值範圍包含在B數值範圍之內即可。比如說int類型轉換爲float類型不需要操作,反之則不行。
*2,顯式轉換
由A轉換到B,明確要求編譯器完成轉換過程。
中日韓文字的ASCII碼爲63,未驗證猜測。
*3,使用Convert命令進行顯式轉換
需要轉換的類型type:Convert.To+type
複雜的變量類型
*1,枚舉
語法:
enum < typeName >:< underlyingType >(可以不寫,默認爲int類型)
{
< value1 >=< actualVal1 >,(可以不寫賦值,默認排序+1)
< value1 >=< actualVal1 >,
< value2 >=< actualVal2 >,

< valueN >=< actualValN >,
}
使用的時候:< typeName > < varName >=< typeName > < value >;
區分大小寫;
需要使用賦值的時候先需要將varName轉換爲underlyingType,再轉換爲想要的值。
示例:

 public  enum name:byte  
        {
            d=2,
        }
 ...
  Console.WriteLine(name.d+Convert.ToString ((byte)name.d));

*2,結構
定義:結構就是由幾個數據類型組成的結構。
語法:
struct< typeName >
{
< accessibility > < type > < name >;

}

*3,數組

表達式
利用運算符與操作數來建立,其中運算符對操作數執行操作。
*1,數學運算符:用戶輸入,類型轉換
*2,賦值運算符
*3,運算符的優先級,詳情見下表
運算符優先級表

命名空間
採用層級結構;.net應用程序中定義的所有名稱,都包括在命名空間類。

namespace learning1
{
    namespace learning3
    {
        public class d2 {
            public static string name = "dsf";
        }
    }
}

其中learning2爲空間名字,引用的時候使用using learning2;引用name的值時候爲learning1.learning3.d2.name

流程控制
布爾邏輯
除了常見的=、==、+=、-=之外,布爾邏輯包括:
與或非
其中&、|是按位操作,相比較而言,&&、||的性能更好。
*1,賦值運算符
*2,按位運算符
&:同1爲1,有0爲0
|:同0爲0,有1爲1
更新的優先級表:
優先級表
goto語句
用法:使用goto語句會跳過中間代碼,直接跳轉到goto語句中的代碼。
語法:

goto name;
其他語句
 name:
            {
                goto執行語句
            }

儘量減少goto語句的執行。
分支
定義:分支是控制下一步要執行哪行代碼的過程。要跳轉的代碼行由某個條件語句來控制。
*1,三元運算符
語法:< Test >?< resultTrue >:< resultFalse >
例如:輸出結果false

string b = (11 < 10) ? "yes" : "false";
            Console.WriteLine(b);

這個運算符比較適用於簡單賦值語句。
*2,if語句
語法:if(){}else{};
if(){}else if(){}else{};
可多重嵌套。
*3,switch語句
語法:
switch(參數)
{
case 比較1:執行語句1;break/return;
case 比較2:執行語句2;break/return;

default:執行餘下情況語句;break/return;
}
循環
定義:循環就是可重複執行的語句。
*1,do循環
語法:
do{
< code to looped >
}while(< test >);
test會返回一個布爾值,當布爾值爲false的時候結束循環。
do循環至少會執行一次。
*2,while循環
語法:
while(< test >){
< code to looped >
}
*3,for循環
語法:
for{< initialization >;< condition >;< operation >}
{
< code to loop >
}
for循環可以嵌套使用。
*4,無限循環
通過代碼或者錯誤的設計來實現。比如while(true){}
*5,循環的中斷
break——立即終止循環
continue——立即終止當前循環(繼續下一次循環)
goto——可以跳出循環,到標記好的位置
return——跳出循環及其包含的函數

第三章 函數及其調試、錯誤處理

第四章 面向對象與類,及類成員
第五章 集合、比較和轉換
第六章 泛型
第七章 其他OOP技術
第八章 C#語言的改進

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章