鍍金池/ 教程/ C#/ C#數(shù)據(jù)類(lèi)型
C#屬性(Properties)
C#與Java比較
C#方法
C#枚舉
C#關(guān)鍵字
C# StreamReader類(lèi)
C#不安全代碼
C#文件(I/O)
C#匿名方法
C#線(xiàn)程同步
C# Thread類(lèi)
C#主線(xiàn)程
C#數(shù)據(jù)類(lèi)型
C# FileStream類(lèi)
C#預(yù)處理指令
C#繼承
C#循環(huán)
C#決策結(jié)構(gòu)
C#集合
C#反射
C#類(lèi)型轉(zhuǎn)換
C#泛型
C# StringReader類(lèi)
C#歷史
C#運(yùn)算符重載
C#屬性
C#線(xiàn)程實(shí)例:Sleep()方法
C#線(xiàn)程示例:優(yōu)先級(jí)
C#線(xiàn)程實(shí)例:Join()方法
C# BinaryReader類(lèi)
C#類(lèi)
C#索引器
C# BinaryWriter類(lèi)
C#序列化
C#常量和文字
C#程序結(jié)構(gòu)
C#封裝
C#事件
C#可空類(lèi)型(nullable)
C#基本語(yǔ)法
C#異常處理
C#教程
C#接口
C# System.IO命名空間
C#線(xiàn)程命名實(shí)例
C# StringWriter類(lèi)
C#線(xiàn)程實(shí)例
C#數(shù)組
C#正則表達(dá)式
C#命名空間
C#反序列化
C#與C++比較
C# TextWriter類(lèi)
C#多線(xiàn)程
C#字符串
C#是什么?
C#變量
C# FileInfo類(lèi)
C#線(xiàn)程實(shí)例:Abort()方法
C#結(jié)構(gòu)體
C#運(yùn)算符
C#入門(mén)程序
C#多線(xiàn)程生命周期
C# TextReader類(lèi)
C# DirectoryInfo類(lèi)
C#委托

C#數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)型指定變量可以存儲(chǔ)的數(shù)據(jù)的類(lèi)型,如:整數(shù),浮點(diǎn),字符等。

C# 語(yǔ)言中有3種類(lèi)型的數(shù)據(jù)類(lèi)型。如下表中所示 -

類(lèi)型 數(shù)據(jù)類(lèi)型
值數(shù)據(jù)類(lèi)型 int, char, float, Boolean
引用數(shù)據(jù)類(lèi)型 字符串,類(lèi),對(duì)象和接口
指針數(shù)據(jù)類(lèi)型 指針

值數(shù)據(jù)類(lèi)型

值數(shù)據(jù)類(lèi)型是基于整數(shù)和基于浮點(diǎn)數(shù)。 C# 語(yǔ)言支持有符號(hào)和無(wú)符號(hào)文字值。

C# 語(yǔ)言中有兩種類(lèi)型的值數(shù)據(jù)類(lèi)型。

  • 預(yù)定義的數(shù)據(jù)類(lèi)型 - 如整型,布爾型,浮點(diǎn)型等
  • 用戶(hù)定義的數(shù)據(jù)類(lèi)型 - 如結(jié)構(gòu),枚舉等

數(shù)據(jù)類(lèi)型的內(nèi)存大小可能會(huì)根據(jù)32位或64位操作系統(tǒng)而不同。我們來(lái)看看值數(shù)據(jù)類(lèi)型。它的大小根據(jù)32位操作系統(tǒng)給出。

數(shù)據(jù)類(lèi)型 內(nèi)存大小 范圍
char 1 byte -128 to 127
signed char 1 byte -128 to 127
unsigned char 1 byte 0 to 127
short 2 byte -32,768 to 32,767
signed short 2 byte -32,768 to 32,767
unsigned short 2 byte 0 to 32,767
int 2 byte -32,768 to 32,767
signed int 2 byte -32,768 to 32,767
unsigned int 2 byte 0 to 32,767
short int 2 byte -32,768 to 32,767
signed short int 2 byte -32,768 to 32,767
unsigned short int 2 byte 0 to 32,767
long int 4 byte
signed long int 4 byte
unsigned long int 4 byte
float 4 byte
double 8 byte
long double 10 byte -

要在特定平臺(tái)上獲取類(lèi)型或變量的確切大小,可以使用sizeof方法。 表達(dá)式sizeof(type)產(chǎn)生對(duì)象或類(lèi)型的存儲(chǔ)大小(以字節(jié)為單位)。以下是在任何機(jī)器上獲取double類(lèi)型的大小的示例:

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

當(dāng)編譯和執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果:

Size of double: 8

引用數(shù)據(jù)類(lèi)型

引用數(shù)據(jù)類(lèi)型不包含存儲(chǔ)在變量中的實(shí)際數(shù)據(jù),但它們包含對(duì)變量的引用。如果一個(gè)變量的數(shù)據(jù)值被更改,則這個(gè)變量將自動(dòng)反映該值的變化。

C# 語(yǔ)言中有兩種類(lèi)型的引用數(shù)據(jù)類(lèi)型。

  • 預(yù)定義類(lèi)型 - 如對(duì)象,字符串。
  • 用戶(hù)定義的類(lèi)型 - 如類(lèi),接口。

內(nèi)置引用類(lèi)型的示例有:objectdynamicstring。

對(duì)象類(lèi)型
對(duì)象類(lèi)型是 C# 通用類(lèi)型系統(tǒng)(CTS)中所有數(shù)據(jù)類(lèi)型的最終基類(lèi)。

當(dāng)一個(gè)值類(lèi)型轉(zhuǎn)換為對(duì)象類(lèi)型時(shí),它被稱(chēng)為裝箱,另一方面,當(dāng)對(duì)象類(lèi)型轉(zhuǎn)換為值類(lèi)型時(shí),稱(chēng)為拆箱。

object obj;
obj = 100; // this is boxing

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

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

dynamic <variable_name> = value;

例如,

dynamic d = 20;

字符串類(lèi)型

字符串類(lèi)型允許為變量分配任何字符串值。String類(lèi)型是System.String類(lèi)的別名。 它是從Object類(lèi)型派生的??梢允褂脙煞N形式的字符串文字來(lái)分配字符串類(lèi)型的值:quoted@quoted

示例

String str = "Yiibai Point";

@quoted字符串文字如下所示:

String str = "Yiibai Point";

指針數(shù)據(jù)類(lèi)型

C# 語(yǔ)言中的指針是變量,也稱(chēng)為定位符或指示符,指向值的地址。

指針中使用的符號(hào)

符號(hào) 名稱(chēng) 說(shuō)明
& 地址運(yùn)算符 獲取變量的地址
* 間接運(yùn)算符 訪(fǎng)問(wèn)地址的值

聲明一個(gè)指針

C# 語(yǔ)言中的指針可以使用*(星號(hào)符號(hào))聲明。

int * a;  //pointer to int      
char * c; //pointer to char