C#--数据类型和类型转换
一、在 C# 中,變量分為以下幾種類(lèi)型:
1、值類(lèi)型(Value types)
值類(lèi)型變量可以直接分配一個(gè)值,它們是從類(lèi)System.ValueType中派生的。值類(lèi)型直接包含數(shù)據(jù),比如int、char、float,它們分別存儲(chǔ)數(shù)字、字符、浮點(diǎn)數(shù)。當(dāng)聲明一個(gè)int類(lèi)型時(shí),系統(tǒng)直接分配內(nèi)存來(lái)存儲(chǔ)值。下表列出了C# 中常用的值類(lèi)型:
| 類(lèi)型 | 描述 | 范圍 |
| int | 32 位有符號(hào)整數(shù)類(lèi)型 | -2,147,483,648 到 2,147,483,647 |
| long | 64 位有符號(hào)整數(shù)類(lèi)型 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| float | 32 位單精度浮點(diǎn)型 | -3.4 x 1038?到 + 3.4 x 1038 |
| double | 64 位雙精度浮點(diǎn)型 | (+/-)5.0 x 10-324?到 (+/-)1.7 x 10308 |
| char | 16 位 Unicode 字符 | U +0000 到 U +ffff |
| decimal | 128 位精確的十進(jìn)制值,28-29 有效位數(shù) | (-7.9 x 1028?到 7.9 x 1028) / 100 到 28 |
| bool | 布爾值 | True 或 False |
2、引用類(lèi)型(Reference types)
引用類(lèi)型不包含存儲(chǔ)在變量中的實(shí)際數(shù)據(jù),但它們包含對(duì)變量的引用。換句話(huà)說(shuō),它們指向的是一個(gè)內(nèi)存位置。使用多個(gè)變量時(shí),引用類(lèi)型可以指向一個(gè)內(nèi)存位置。如果內(nèi)存位置的數(shù)據(jù)是由一個(gè)變量改變的,其他變量會(huì)自動(dòng)反映這種值的變化。內(nèi)置的引用類(lèi)型有:object、dynamic?和?string。
2.1、對(duì)象(Object)類(lèi)型
對(duì)象類(lèi)型?是 C# 通用類(lèi)型系統(tǒng)(Common Type System - CTS)中所有數(shù)據(jù)類(lèi)型的終極基類(lèi)。Object 是 System.Object 類(lèi)的別名。所以對(duì)象(Object)類(lèi)型可以被分配任何其他類(lèi)型(值類(lèi)型、引用類(lèi)型、預(yù)定義類(lèi)型或用戶(hù)自定義類(lèi)型)的值。但是,在分配值之前,需要先進(jìn)行類(lèi)型轉(zhuǎn)換。
當(dāng)一個(gè)值類(lèi)型轉(zhuǎn)換為對(duì)象類(lèi)型時(shí),則被稱(chēng)為?裝箱;另一方面,當(dāng)一個(gè)對(duì)象類(lèi)型轉(zhuǎn)換為值類(lèi)型時(shí),則被稱(chēng)為?拆箱。
object obj;
obj = 100; // 這是裝箱
2.2、動(dòng)態(tài)(Dynamic)類(lèi)型
就是可以存儲(chǔ)任何類(lèi)型的值在動(dòng)態(tài)數(shù)據(jù)類(lèi)型變量中,這些變量的類(lèi)型檢查是在運(yùn)行時(shí)發(fā)生的。動(dòng)態(tài)類(lèi)型與對(duì)象類(lèi)型相似,但是對(duì)象類(lèi)型變量的類(lèi)型檢查是在編譯時(shí)發(fā)生的,而動(dòng)態(tài)類(lèi)型變量的類(lèi)型檢查是在運(yùn)行時(shí)發(fā)生的。
2.3、字符串(String)類(lèi)型
字符串類(lèi)型允許給變量分配任何字符串值。字符串(String)類(lèi)型是 System.String 類(lèi)的別名。它是從對(duì)象(Object)類(lèi)型派生的。字符串(String)類(lèi)型的值可以通過(guò)兩種形式進(jìn)行分配:引號(hào)和 @引號(hào)。另外,@ 字符串中可以任意換行,換行符及縮進(jìn)空格都計(jì)算在字符串長(zhǎng)度之內(nèi)。?
例如:String str = "Hello World"或者@"Hello World"。
3、指針類(lèi)型(Pointer types)
指針類(lèi)型變量存儲(chǔ)另一種類(lèi)型的內(nèi)存地址。C# 中的指針與 C 或 C++ 中的指針有相同的功能。
聲明指針類(lèi)型的語(yǔ)法:type* identifier;
例如:char* cdef?。
?
二、類(lèi)型轉(zhuǎn)換:
類(lèi)型轉(zhuǎn)換從根本上說(shuō)是類(lèi)型鑄造,或者說(shuō)是把數(shù)據(jù)從一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型。在 C# 中,類(lèi)型鑄造有兩種形式:
隱式類(lèi)型轉(zhuǎn)換:這些轉(zhuǎn)換是 C# 默認(rèn)的以安全方式進(jìn)行的轉(zhuǎn)換, 不會(huì)導(dǎo)致數(shù)據(jù)丟失。例如,從小的整數(shù)類(lèi)型轉(zhuǎn)換為大的整數(shù)類(lèi)型,從派生類(lèi)轉(zhuǎn)換為基類(lèi)。
顯式類(lèi)型轉(zhuǎn)換:顯式類(lèi)型轉(zhuǎn)換,即強(qiáng)制類(lèi)型轉(zhuǎn)換。顯式轉(zhuǎn)換需要強(qiáng)制轉(zhuǎn)換運(yùn)算符,而且強(qiáng)制轉(zhuǎn)換會(huì)造成數(shù)據(jù)丟失。?
double?d?=?95.27; int?i; // 強(qiáng)制轉(zhuǎn)換 double 為 int i?=?(int)d; Console.WriteLine(i); Console.ReadKey(); // 結(jié)果為95 會(huì)丟失部分?jǐn)?shù)據(jù)?
總結(jié)
以上是生活随笔為你收集整理的C#--数据类型和类型转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#--程序结构
- 下一篇: C#--封装、继承、多态