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