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

2018-09-27 16:27 更新

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

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

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

值類型

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

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

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

類型描述范圍默認(rèn)值
bool布爾值True 或 FalseFalse
byte8 位無符號(hào)整數(shù)0 到 2550
char16 位 Unicode 字符U +0000 到 U +ffff'\0'
decimal128 位精確的十進(jìn)制值,28-29 有效位數(shù)(-7.9 x 1028 到 7.9 x 1028) / 100 到 280.0M
double64 位雙精度浮點(diǎn)型(+/-) 5.0 x 10-324 到 (+/-) 1.7 x 103080.0D
float32 位單精度浮點(diǎn)型-3.4 x 1038 到 + 3.4 x 10380.0F
int32 位有符號(hào)整數(shù)類型-2 , 147 , 483 , 648 到 2 , 147 , 483 , 6470
long64 位有符號(hào)整數(shù)類型-923 , 372 , 036 , 854 , 775 , 808 到 9 , 223 , 372 , 036 , 854 , 775 , 8070L
sbyte8 位有符號(hào)整數(shù)類型-128 到 1270
short16 位有符號(hào)整數(shù)類型-32 , 768 到 32 , 7670
uint32 位無符號(hào)整數(shù)類型0 到 4 , 294 , 967 , 2950
ulong64 位無符號(hào)整數(shù)類型0 到 18 , 446 , 744 , 073 ,709 ,551 , 6150
ushort16 位無符號(hào)整數(shù)類型0 到 65 , 5350

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

引用類型

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

換句話說,它們指向的是一個(gè)內(nèi)存位置。使用多重變量時(shí),引用類型可以指向一個(gè)內(nèi)存位置。如果內(nèi)存位置的數(shù)據(jù)是由多重變量之中的一個(gè)改變的,其他變量會(huì)自動(dòng)相應(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; // 這是裝箱

動(dòng)態(tài)類型

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

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

dynamic <variable_name> = value;

例如:

dynamic d = 20;

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

字符串類型

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

例如:

String str = "Tutorials Point";

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

@"Tutorials Point";

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

指針類型

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

聲明指針類型的語法:

type* identifier;

例如:

char* cptr;
int* iptr;

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

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)