2.1、C#語法概述
( 1 )、在 C# 中,編譯器是忽略空白符的(包括空格和制表符),所以寫程序的時候,可以按照自己的習慣來格式化代碼,以滿足自己的需求。比如一個變量與一個符號之間可以是一個空格也可以是多個空格,也可以沒有空格,但是建議有一個空格。
( 2 )、在 C# 中,任何一個語句都是以分號結束的,所以在一行上可以寫多條語句,每個語句以分號結束即可。但是一般都是一行寫一條語句,不能把一條語句分多行寫。
( 3 )、在 C# 中,為了程序更具可讀性,一般都要添加很多的注釋,在注釋的區域內,編譯器是不會去編譯被注釋的內容的,有三種注釋方式:
A 、單行注釋:在一行之前使用左斜杠“ // ”
B 、多行注釋:在要注釋的多行前后加上“ /*……*/ ”
C 、對函數、屬性等的說明注釋“ /// ”,可以對屬性、函數、類進行說明,也可以對函數的參數進行說明,以后調用的時候能看到說明了
( 4 )、可以隱藏代碼: #region……#endregion
( 5 )、 C# 語言是塊結構語言,可以將幾個語句包含到“ {} ”中,構成一個塊,注意:在塊中定義的變量,作用域只在塊中。
2.2、C#數據類型的概述
2.3、值類型(簡單類型)
( 1 )、 byte 類型
byte 類型是一個無符號整數類型,它占 1 個字節。
( 2 )、 int 類型
int 類型是有符號整數類型,占用 4 個字節。
( 3 )、 long 類型
long 類型是有符號整數類型,占用 8 個字節。
( 4 )、 bool 類型
bool 類型是個邏輯類型,它的值是邏輯值,只有兩個,一個是 true ,一個是 false 。對它進行賦值、比較都必須用 true 、 false ,輸出也是 true 、 false 。不能賦值為數字。
( 5 )、 double
雙精度,占 64 個字節。在程序中任意寫的一個浮點數字是雙精度。
( 6 )、 float
單精度,占 32 個字節。因為在程序中任意寫的一個浮點數字是雙精度,而在 C# 中,低精度的數值轉換成為高精度的數值可以隱式的轉換,但是高精度的轉換成為低精度只能顯示
的轉換。所以要把一個浮點數字直接賦值給單精度變量,會出錯,必須顯式轉換,或者在浮點數字后面加上 f 。
( 7 )、 char
字符是用單引號括起來的,字符串是用雙引號括起來的字符序列集合。字符是以數值的形式存放在內存中的,這個數值就是這個字符的編碼。編碼有很多種的方式,但是主流的就是以下幾種:
A 、 ASCII :如果系統采用這種編碼方式,這種編碼的字符中,數字、字母占用一個字節,漢字占用兩個字節。
B 、 Unicode :如果系統采用這種編碼方式,這種編碼的所有字符統一占用兩個字節。
C 、 GB2312 :如果系統采用這種編碼方式,這種編碼的字符中,數字、字母占用一個字節,漢字占用兩個字節。這個是系統的默認編碼。
在 C# 中, char 類型占用兩個字節,所以不論字符采用何種編碼方式,它都可以接受任
意一個字符,比如漢字。但是在 C#.NET 中,默認采用的編碼方式是 ASCII 。 C#.NET 中的類型是非常嚴格的,雖然 char 類型的數據最終是以整數編碼的形式存放在內存中,但是不能把整數直接賦值給 char 類型的數據, char 可以直接賦值給 int 整數。
常見的轉義字符:
\ ’ |
單引號 |
\ ’’ |
雙引號 |
\\ |
右斜杠 |
\0 |
空字符,連空格都不是 |
\a |
響鈴 |
\n |
換行 |
\r |
回車 |
\t |
Tab 制表符 |
注意:
( 1 )、在 windows 下回車換行符連用: \r\n ,否則無效,即在一行與另一行之間隱含了 \r\n 兩個字符。
( 2 )、在 C# 中,右斜杠 \ 只要出現在字符串中了,那么系統就認為它跟后面的字符一起構成
轉義字符,如果這種轉義字符是存在的,那么就編譯通過,如果轉義字符不存在,那么編
譯就無法通過,會報錯,認為轉義字符非法。但是如果在字符串前面加上了 @ 符號,那么
字符串就被認為是逐字符字符串,里面的右斜杠 \ 就會被認為是普通的字符,而不會被認為
是轉義字符前面的右斜杠了。
( 3 )、單引號要特別注意,其實在 C# 中不轉義,也可以直接使用。
2.4、值類型(枚舉類型)
有些變量,不論它的值怎么變化,也只可能是幾個固定的值,那么這種變量就可以定義成枚舉類型:
Enum typeName
{
Value1 ,
Value2 = 5 ,
Value3 ,
Value4 ,
……
}
枚舉值是有值的,默認情況下第一個值是 0 ,后面依次加 1 遞增,也可以對枚舉值進行賦值,那么以賦值為主,后面的依次加 1 。
( 1 )、定義一個枚舉類型的變量:
typeName a ;
( 2 )、給它賦值:
a = typeName.value1;
賦值完成之后,輸出的也是枚舉值而非數值。
( 3 )、可以將枚舉值轉換成為整數 :
Int b = (int)a; 或者
int b = Convert.ToInt32(a);
( 4 )、枚舉類型是一個類型,類也是一個類型,很顯然是一個級別的,所以枚舉類型可以定義在類的外面,命名空間下面,這樣才比較合理。當然在類的內部去定義枚舉類型也可以,但是不推薦這么做。在本項目中定義的類型可以直接引用,但是在別的項目中定義的類型,首先要添加引用,然后再 using (如果 using 省略的話,那么就需要命名空間名 . 類名),然后如果是定義在類外的,那么必須是 public 才可以引用到,如果是在類的內部的,那么不僅要枚舉類型是 public 的,還要類是 public 的,引用的時候是類名 . 枚舉類型名。
2.5、值類型(結構類型)
在 C#.NET 中,結構體基本不使用,因為面向對象的設計思想中,類可以取代結構體,更加方便。在此主要說明一下類與結構體的區別:
( 1 )、結構體是值類型,而類是引用類型的。
( 2 )、當結構體和類作為函數參數的時候,參數傳遞時,結構傳的是值,類傳的是引用。
( 3 )、結構的實例化可以不使用 new 。
( 4 )、結構也可以聲明構造函數,但是必須帶參數。
( 5 )、結構不能繼承。
( 6 )、結構中的字段是不能被初始化的。
2.6、值類型變量的作用域和生存期
非靜態變量,只考慮類的內部的情況:
( 1 )、值類型的變量如果是定義在類的內部作為屬性變量,那么就具有該類全局作用域,即類內部的函數都可以調用這個變量,哪怕變量定義在函數的下面。但是一般變量都定義在所有的函數之前;一個對象具有一套變量。
類的對象創建開始,該對象這一套變量在該對象中就分配了存儲空間,直到該對象釋放,那么該對象這一套變量也就釋放了。
( 2 )、在函數中,變量的作用域是從定義的位置開始,一直到函數結束為止。在函數中,變量定義的前面是不可以引用該變量的。
在函數中,函數被調用的時候,定義變量的時候,變量就被分配了存儲空間,函數結束了,變量就會自動的被釋放了。
( 3 )、在函數中的某個塊 {} 中定義的變量,作用域是從這個塊中定義開始,一直到塊結束為止。
函數被調用的時候,定義的時候分配存儲空間,塊結束的時候就釋放了。
但是要特別注意:即使是在塊中定義的變量,即使他的作用域只在塊中,而不在塊外,也不能在塊中聲明一個與塊外同名的變量(這個塊外同名變量是指該函數中的,具有從聲明開始一直到函數結束為止的作用域的變量,這個變量可以是在塊前也可以是在塊后的,這個變量不在該函數的另外一個塊中)。但是在一個函數的不同的兩個塊中卻可以聲明同名的變量。
( 4 )、如果在類中定義的變量與在函數中定義的變量同名的話,那么函數中的變量會覆蓋掉類中的,在該函數中,以該函數中定義的變量為主。但是類中的這個變量在其他函數中還是可以引用的。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
