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

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