鍍金池/ 教程/ C#/ 數(shù)據(jù)類型
循環(huán)
正則表達(dá)式
概述
委托
多態(tài)性
字符串
繼承
結(jié)構(gòu)體
集合
變量
不安全代碼
判斷
反射
異常處理
可空類型
方法
數(shù)據(jù)類型
命名空間
文件 I/O
類型轉(zhuǎn)換
屬性
程序結(jié)構(gòu)
事件
接口
預(yù)處理指令
運(yùn)算符
多線程
匿名方法
索引器
泛型
封裝
常量和文字
基本語法
特性
數(shù)組
環(huán)境配置
運(yùn)算符重載
枚舉

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

在 C# 中,變量分為以下幾種類型:

  • 值類型(Value types)
  • 引用類型(Reference types)
  • 指針類型(Pointer types)

值類型

值類型變量可以直接分配給其一個(gè)值。它們是從類 System.ValueType 中派生的。

值類型直接包含數(shù)據(jù)。比如 intchar、float,它們分別存儲數(shù)字、字母和浮點(diǎn)數(shù)。當(dāng)您聲明一個(gè) int 類型的變量時(shí),系統(tǒng)將會分配內(nèi)存來存儲它的值。

下表列出了 C# 2010 中可用的值類型:

類型 描述 范圍 默認(rèn)值
bool 布爾值 True 或 False False
byte 8 位無符號整數(shù) 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff '\0'
decimal 128 位精確的十進(jìn)制值,28-29 有效位數(shù) (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位雙精度浮點(diǎn)型 (+/-) 5.0 x 10-324 到 (+/-) 1.7 x 10308 0.0D
float 32 位單精度浮點(diǎn)型 -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ù)類型 -923 , 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

如需得到一個(gè)類型或一個(gè)變量在特定平臺上的準(zhǔn)確大小,可以使用 sizeof 方法。表達(dá)式 sizeof(type) 產(chǎn)生以字節(jié) 為單位存儲對象或類型的存儲尺寸。下面舉例獲取任何機(jī)器上 int 類型的存儲大?。?/p>

namespace DataTypeApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

編譯執(zhí)行上述代碼,得到如下結(jié)果:

Size of int: 4

引用類型

引用類型不包含存儲在變量中的實(shí)際數(shù)據(jù),但它們包含對變量的引用。

換句話說,它們指向的是一個(gè)內(nèi)存位置。使用多重變量時(shí),引用類型可以指向一個(gè)內(nèi)存位置。 如果內(nèi)存位置的數(shù)據(jù)是由多重變量之中的一個(gè)改變的,其他變量會自動相應(yīng)這種值的變化。 例如,內(nèi)置的引用類型有:object、dynamicstring

對象類型

對象類型是 C# 通用類型系統(tǒng)(CTS)中所有數(shù)據(jù)類型基類。 Object 是 System.Object 類的別名。 對象類型可以被分配任何其他類型(值類型、引用類型、預(yù)定義類型或用戶自定義類型)的值。但是,在分配值之前,需要先進(jìn)行類型轉(zhuǎn)換。

當(dāng)一個(gè)值類型轉(zhuǎn)換為對象類型時(shí),則被稱為裝箱;另一方面,當(dāng)一個(gè)對象類型轉(zhuǎn)換為值類型時(shí),則被稱為拆箱。

object obj;
obj = 100; // 這是裝箱

動態(tài)類型

您可以在動態(tài)數(shù)據(jù)類型變量中存儲任何類型的值。這些變量的類型檢查是在運(yùn)行時(shí)進(jìn)行的。

聲明動態(tài)類型的語法:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

動態(tài)類型與對象類型相似,但是對象類型變量的類型檢查是在編譯時(shí)進(jìn)行的,而動態(tài)類型變量的類型檢查是在運(yùn)行時(shí)進(jìn)行的。

字符串類型

字符串 類型允許您給變量分配任何字符串值。字符串類型是 System.String 類的別名。它是從對象類型派生的。字符串類型的值可以通過兩種形式進(jìn)行分配:引號和 @ 引號。

例如:

String str = "Tutorials Point";

一個(gè) @ 引號字符串:

@"Tutorials Point";

用戶自定義引用類型有:class、interface 或 delegate。我們將在以后的章節(jié)中討論這些類型。

指針類型

指針類型變量存儲另一種類型的內(nèi)存地址。C# 中的指針與 C 或 C++ 中的指針有相同的功能。

聲明指針類型的語法:

type* identifier;

例如:

char* cptr;
int* iptr;

我們將在章節(jié)"不安全的代碼"中討論指針類型。

上一篇:匿名方法下一篇:環(huán)境配置