一文搞懂C# 數(shù)據(jù)類型
在 C# 中,變量分為以下幾種類型:
- 值類型(Value types)
- 引用類型(Reference types)
- 指針類型(Pointer types)
值類型(Value types)
值類型變量可以直接分配給一個值。它們是從類 System.ValueType 中派生的。
值類型直接包含數(shù)據(jù)。比如 int、char、float,它們分別存儲數(shù)字、字符、浮點數(shù)。當(dāng)您聲明一個 int 類型時,系統(tǒng)分配內(nèi)存來存儲值。
下表列出了 C# 2010 中可用的值類型:
| 類型 | 描述 | 范圍 | 默認值 |
| bool | 布爾值 | True 或 False | False |
| byte | 8 位無符號整數(shù) | 0 到 255 | 0 |
| char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '\0' |
| decimal | 128 位精確的十進制值,28-29 有效位數(shù) | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
| double | 64 位雙精度浮點型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
| float | 32 位單精度浮點型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
| int | 32 位有符號整數(shù)類型 | -2,147,483,648 到 2,147,483,647 | 0 |
| long | 64 位有符號整數(shù)類型 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
| sbyte | 8 位有符號整數(shù)類型 | -128 到 127 | 0 |
| short | 16 位有符號整數(shù)類型 | -32,768 到 32,767 | 0 |
| uint | 32 位無符號整數(shù)類型 | 0 到 4,294,967,295 | 0 |
| ulong | 64 位無符號整數(shù)類型 | 0 到 18,446,744,073,709,551,615 | 0 |
| ushort | 16 位無符號整數(shù)類型 | 0 到 65,535 | 0 |
如需得到一個類型或一個變量在特定平臺上的準(zhǔn)確尺寸,可以使用 sizeof 方法。表達式 sizeof(type) 產(chǎn)生以字節(jié)為單位存儲對象或類型的存儲尺寸。下面舉例獲取任何機器上 int 類型的存儲尺寸:
using System;
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Size of int: 4
引用類型(Reference types)
引用類型不包含存儲在變量中的實際數(shù)據(jù),但它們包含對變量的引用。
換句話說,它們指的是一個內(nèi)存位置。使用多個變量時,引用類型可以指向一個內(nèi)存位置。如果內(nèi)存位置的數(shù)據(jù)是由一個變量改變的,其他變量會自動反映這種值的變化。內(nèi)置的 引用類型有:object、dynamic 和 string。
對象(Object)類型
對象(Object)類型 是 C# 通用類型系統(tǒng)(Common Type System - CTS)中所有數(shù)據(jù)類型的終極基類。Object 是 System.Object 類的別名。所以對象(Object)類型可以被分配任何其他類型(值類型、引用類型、預(yù)定義類型或用戶自定義類型)的值。但是,在分配值之前,需要先進行類型轉(zhuǎn)換。
當(dāng)一個值類型轉(zhuǎn)換為對象類型時,則被稱為 裝箱;另一方面,當(dāng)一個對象類型轉(zhuǎn)換為值類型時,則被稱為 拆箱。
object obj; obj = 100; // 這是裝箱
動態(tài)(Dynamic)類型
您可以存儲任何類型的值在動態(tài)數(shù)據(jù)類型變量中。這些變量的類型檢查是在運行時發(fā)生的。
聲明動態(tài)類型的語法:
dynamic <variable_name> = value;
例如:
dynamic d = 20;
動態(tài)類型與對象類型相似,但是對象類型變量的類型檢查是在編譯時發(fā)生的,而動態(tài)類型變量的類型檢查是在運行時發(fā)生的。
字符串(String)類型
字符串(String)類型 允許您給變量分配任何字符串值。字符串(String)類型是 System.String 類的別名。它是從對象(Object)類型派生的。字符串(String)類型的值可以通過兩種形式進行分配:引號和 @引號。
例如:
String str = "runoob.com";
一個 @引號字符串:
@"runoob.com";
C# string 字符串的前面可以加 @(稱作"逐字字符串")將轉(zhuǎn)義字符(\)當(dāng)作普通字符對待,比如:
string str = @"C:\Windows";
等價于:
string str = "C:\\Windows";
@ 字符串中可以任意換行,換行符及縮進空格都計算在字符串長度之內(nèi)。
string str = @"<script type=""text/javascript"">
<!--
-->
</script>";
用戶自定義引用類型有:class、interface 或 delegate。我們將在以后的章節(jié)中討論這些類型。
指針類型(Pointer types)
指針類型變量存儲另一種類型的內(nèi)存地址。C# 中的指針與 C 或 C++ 中的指針有相同的功能。
聲明指針類型的語法:
type* identifier;
例如:
char* cptr;
int* iptr;
以上就是一文搞懂C# 數(shù)據(jù)類型的詳細內(nèi)容,更多關(guān)于C# 數(shù)據(jù)類型的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#中調(diào)用Windows API的技術(shù)要點說明
本篇文章主要是對C#中調(diào)用Windows API的技術(shù)要點進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
在C# WPF下自定義滾動條ScrollViewer樣式的操作
這篇文章主要介紹了在C# WPF下自定義滾動條ScrollViewer樣式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
C#把數(shù)組中的某個元素取出來放到第一個位置的實現(xiàn)方法
這篇文章主要介紹了C#把數(shù)組中的某個元素取出來放到第一個位置的實現(xiàn)方法,涉及C#針對數(shù)組的常見操作技巧,非常具有實用價值,需要的朋友可以參考下2014-12-12
WPF/Silverlight實現(xiàn)圖片局部放大的方法分析
這篇文章主要介紹了WPF/Silverlight實現(xiàn)圖片局部放大的方法,結(jié)合實例形式分析了WPF/Silverlight針對圖片屬性操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-03-03
C#使用SQL DataReader訪問數(shù)據(jù)的優(yōu)點和實例
今天小編就為大家分享一篇關(guān)于C#使用SQL DataReader訪問數(shù)據(jù)的優(yōu)點和實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10

