黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

第二章、C#的數(shù)據(jù)類型(2.1節(jié)~2.6節(jié):值類型以及

系統(tǒng) 2979 0

2.1、C#語(yǔ)法概述

1 )、在 C# 中,編譯器是忽略空白符的(包括空格和制表符),所以寫(xiě)程序的時(shí)候,可以按照自己的習(xí)慣來(lái)格式化代碼,以滿足自己的需求。比如一個(gè)變量與一個(gè)符號(hào)之間可以是一個(gè)空格也可以是多個(gè)空格,也可以沒(méi)有空格,但是建議有一個(gè)空格。

2 )、在 C# 中,任何一個(gè)語(yǔ)句都是以分號(hào)結(jié)束的,所以在一行上可以寫(xiě)多條語(yǔ)句,每個(gè)語(yǔ)句以分號(hào)結(jié)束即可。但是一般都是一行寫(xiě)一條語(yǔ)句,不能把一條語(yǔ)句分多行寫(xiě)。

3 )、在 C# 中,為了程序更具可讀性,一般都要添加很多的注釋,在注釋的區(qū)域內(nèi),編譯器是不會(huì)去編譯被注釋的內(nèi)容的,有三種注釋方式:

A 、單行注釋:在一行之前使用左斜杠“ //

B 、多行注釋:在要注釋的多行前后加上“ /*……*/

C 、對(duì)函數(shù)、屬性等的說(shuō)明注釋“ /// ”,可以對(duì)屬性、函數(shù)、類進(jìn)行說(shuō)明,也可以對(duì)函數(shù)的參數(shù)進(jìn)行說(shuō)明,以后調(diào)用的時(shí)候能看到說(shuō)明了

4 )、可以隱藏代碼: #region……#endregion

5 )、 C# 語(yǔ)言是塊結(jié)構(gòu)語(yǔ)言,可以將幾個(gè)語(yǔ)句包含到“ {} ”中,構(gòu)成一個(gè)塊,注意:在塊中定義的變量,作用域只在塊中。

2.2、C#數(shù)據(jù)類型的概述

數(shù)據(jù)類型分類圖

2.3、值類型(簡(jiǎn)單類型)

1 )、 byte 類型

byte 類型是一個(gè)無(wú)符號(hào)整數(shù)類型,它占 1 個(gè)字節(jié)。

2 )、 int 類型

int 類型是有符號(hào)整數(shù)類型,占用 4 個(gè)字節(jié)。

3 )、 long 類型

long 類型是有符號(hào)整數(shù)類型,占用 8 個(gè)字節(jié)。

4 )、 bool 類型

bool 類型是個(gè)邏輯類型,它的值是邏輯值,只有兩個(gè),一個(gè)是 true ,一個(gè)是 false 。對(duì)它進(jìn)行賦值、比較都必須用 true false ,輸出也是 true false 。不能賦值為數(shù)字。

5 )、 double

雙精度,占 64 個(gè)字節(jié)。在程序中任意寫(xiě)的一個(gè)浮點(diǎn)數(shù)字是雙精度。

6 )、 float

單精度,占 32 個(gè)字節(jié)。因?yàn)樵诔绦蛑腥我鈱?xiě)的一個(gè)浮點(diǎn)數(shù)字是雙精度,而在 C# 中,低精度的數(shù)值轉(zhuǎn)換成為高精度的數(shù)值可以隱式的轉(zhuǎn)換,但是高精度的轉(zhuǎn)換成為低精度只能顯示

的轉(zhuǎn)換。所以要把一個(gè)浮點(diǎn)數(shù)字直接賦值給單精度變量,會(huì)出錯(cuò),必須顯式轉(zhuǎn)換,或者在浮點(diǎn)數(shù)字后面加上 f

7 )、 char

字符是用單引號(hào)括起來(lái)的,字符串是用雙引號(hào)括起來(lái)的字符序列集合。字符是以數(shù)值的形式存放在內(nèi)存中的,這個(gè)數(shù)值就是這個(gè)字符的編碼。編碼有很多種的方式,但是主流的就是以下幾種:

A ASCII :如果系統(tǒng)采用這種編碼方式,這種編碼的字符中,數(shù)字、字母占用一個(gè)字節(jié),漢字占用兩個(gè)字節(jié)。

B Unicode :如果系統(tǒng)采用這種編碼方式,這種編碼的所有字符統(tǒng)一占用兩個(gè)字節(jié)。

C GB2312 :如果系統(tǒng)采用這種編碼方式,這種編碼的字符中,數(shù)字、字母占用一個(gè)字節(jié),漢字占用兩個(gè)字節(jié)。這個(gè)是系統(tǒng)的默認(rèn)編碼。

C# 中, char 類型占用兩個(gè)字節(jié),所以不論字符采用何種編碼方式,它都可以接受任

意一個(gè)字符,比如漢字。但是在 C#.NET 中,默認(rèn)采用的編碼方式是 ASCII C#.NET 中的類型是非常嚴(yán)格的,雖然 char 類型的數(shù)據(jù)最終是以整數(shù)編碼的形式存放在內(nèi)存中,但是不能把整數(shù)直接賦值給 char 類型的數(shù)據(jù), char 可以直接賦值給 int 整數(shù)。

常見(jiàn)的轉(zhuǎn)義字符:

\

單引號(hào)

\ ’’

雙引號(hào)

\\

右斜杠

\0

空字符,連空格都不是

\a

響鈴

\n

換行

\r

回車(chē)

\t

Tab 制表符

注意:

1 )、在 windows 下回車(chē)換行符連用: \r\n ,否則無(wú)效,即在一行與另一行之間隱含了 \r\n 兩個(gè)字符。

2 )、在 C# 中,右斜杠 \ 只要出現(xiàn)在字符串中了,那么系統(tǒng)就認(rèn)為它跟后面的字符一起構(gòu)成

轉(zhuǎn)義字符,如果這種轉(zhuǎn)義字符是存在的,那么就編譯通過(guò),如果轉(zhuǎn)義字符不存在,那么編

譯就無(wú)法通過(guò),會(huì)報(bào)錯(cuò),認(rèn)為轉(zhuǎn)義字符非法。但是如果在字符串前面加上了 @ 符號(hào),那么

字符串就被認(rèn)為是逐字符字符串,里面的右斜杠 \ 就會(huì)被認(rèn)為是普通的字符,而不會(huì)被認(rèn)為

是轉(zhuǎn)義字符前面的右斜杠了。

3 )、單引號(hào)要特別注意,其實(shí)在 C# 中不轉(zhuǎn)義,也可以直接使用。

2.4、值類型(枚舉類型)

有些變量,不論它的值怎么變化,也只可能是幾個(gè)固定的值,那么這種變量就可以定義成枚舉類型:

Enum typeName

{

Value1

Value2 = 5

Value3

Value4

……

}

枚舉值是有值的,默認(rèn)情況下第一個(gè)值是 0 ,后面依次加 1 遞增,也可以對(duì)枚舉值進(jìn)行賦值,那么以賦值為主,后面的依次加 1

1 )、定義一個(gè)枚舉類型的變量:

typeName a

2 )、給它賦值:

a = typeName.value1;

賦值完成之后,輸出的也是枚舉值而非數(shù)值。

3 )、可以將枚舉值轉(zhuǎn)換成為整數(shù) :

Int b = (int)a; 或者

int b = Convert.ToInt32(a);

4 )、枚舉類型是一個(gè)類型,類也是一個(gè)類型,很顯然是一個(gè)級(jí)別的,所以枚舉類型可以定義在類的外面,命名空間下面,這樣才比較合理。當(dāng)然在類的內(nèi)部去定義枚舉類型也可以,但是不推薦這么做。在本項(xiàng)目中定義的類型可以直接引用,但是在別的項(xiàng)目中定義的類型,首先要添加引用,然后再 using (如果 using 省略的話,那么就需要命名空間名 . 類名),然后如果是定義在類外的,那么必須是 public 才可以引用到,如果是在類的內(nèi)部的,那么不僅要枚舉類型是 public 的,還要類是 public 的,引用的時(shí)候是類名 . 枚舉類型名。

2.5、值類型(結(jié)構(gòu)類型)

C#.NET 中,結(jié)構(gòu)體基本不使用,因?yàn)槊嫦驅(qū)ο蟮脑O(shè)計(jì)思想中,類可以取代結(jié)構(gòu)體,更加方便。在此主要說(shuō)明一下類與結(jié)構(gòu)體的區(qū)別:

1 )、結(jié)構(gòu)體是值類型,而類是引用類型的。

2 )、當(dāng)結(jié)構(gòu)體和類作為函數(shù)參數(shù)的時(shí)候,參數(shù)傳遞時(shí),結(jié)構(gòu)傳的是值,類傳的是引用。

3 )、結(jié)構(gòu)的實(shí)例化可以不使用 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)用這個(gè)變量,哪怕變量定義在函數(shù)的下面。但是一般變量都定義在所有的函數(shù)之前;一個(gè)對(duì)象具有一套變量。

類的對(duì)象創(chuàng)建開(kāi)始,該對(duì)象這一套變量在該對(duì)象中就分配了存儲(chǔ)空間,直到該對(duì)象釋放,那么該對(duì)象這一套變量也就釋放了。

2 )、在函數(shù)中,變量的作用域是從定義的位置開(kāi)始,一直到函數(shù)結(jié)束為止。在函數(shù)中,變量定義的前面是不可以引用該變量的。

在函數(shù)中,函數(shù)被調(diào)用的時(shí)候,定義變量的時(shí)候,變量就被分配了存儲(chǔ)空間,函數(shù)結(jié)束了,變量就會(huì)自動(dòng)的被釋放了。

3 )、在函數(shù)中的某個(gè)塊 {} 中定義的變量,作用域是從這個(gè)塊中定義開(kāi)始,一直到塊結(jié)束為止。

函數(shù)被調(diào)用的時(shí)候,定義的時(shí)候分配存儲(chǔ)空間,塊結(jié)束的時(shí)候就釋放了。

但是要特別注意:即使是在塊中定義的變量,即使他的作用域只在塊中,而不在塊外,也不能在塊中聲明一個(gè)與塊外同名的變量(這個(gè)塊外同名變量是指該函數(shù)中的,具有從聲明開(kāi)始一直到函數(shù)結(jié)束為止的作用域的變量,這個(gè)變量可以是在塊前也可以是在塊后的,這個(gè)變量不在該函數(shù)的另外一個(gè)塊中)。但是在一個(gè)函數(shù)的不同的兩個(gè)塊中卻可以聲明同名的變量。

4 )、如果在類中定義的變量與在函數(shù)中定義的變量同名的話,那么函數(shù)中的變量會(huì)覆蓋掉類中的,在該函數(shù)中,以該函數(shù)中定義的變量為主。但是類中的這個(gè)變量在其他函數(shù)中還是可以引用的。

第二章、C#的數(shù)據(jù)類型(2.1節(jié)~2.6節(jié):值類型以及值類型變量的作用域與生存期)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論