C#數據類型超全(滿滿乾貨)

C#數據類型分爲三類,分別是值類型,引用類型,指針類型(不常用)

值類型:直接分配一個值,指的就是系統分配內存來存儲一個數據。

簡單值類型的數據類型包含以下幾種:

💗 整數類型

類型 描述 範圍

默認值

byte 8 位無符號整數 0 到 255 0
int 32 位有符號整數類型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符號整數類型 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符號整數類型 -128 到 127 0
short 16 位有符號整數類型 -32,768 到 32,767 0
uint 32 位無符號整數類型 0 到 4,294,967,295 0
ulong 64 位無符號整數類型 0 到 18,446,744,073,709,551,615 0
ushort 16 位無符號整數類型 0 到 65,535

0

💗 字符類型

類型 描述 範圍

默認值

char 16 位 Unicode 字符 U +0000 到 U +ffff '\0'

💗 浮點類型(實數類型)

類型 描述 範圍

默認值

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
decimal 128 位精確的十進制值,28-29 有效位數 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M

💗 布爾類型

類型 描述 範圍

默認值

bool 布爾值 True 或 False False

複合值類型的數據類型包括以下幾種:

❤ 結構類型

struct類型是一種值類型,通常用於封裝小型相關變量組。(在這個結構類型中,可以定義多個不同簡單值類型的變量)

舉個栗子:

//定義一個書的特徵
public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

❤ 枚舉類型

枚舉類型是一種值類型, 基於整數類型的一系列命名常量,爲了定義枚舉類型,通常使用enum關鍵字和枚舉成員的名字。

舉個栗子:

枚舉季節
enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

 

引用類型:分配一個地址,存儲的是一個內存位置,不指具體的一個數值。【對一個變量執行的操作會影響另一個變量所引用的對象】

引用類型的數據烈性包含以下幾種:

❤ 內置的引用類型:

類型 描述
object 對象類型:是C#通用類型系統中所有數據類型的終極基類
Dynamic 動態類型:可以存儲任何類型的值在動態數據類型變量中
String

字符串類型:可以分配變量任何字符串值

對象類型涉及一個裝箱取消裝箱問題

裝箱是將值類型轉換爲object類型或由此值類型實現的任何藉口類型的過程。

取消裝箱是從對象中提取值類型

//裝箱 boxing
int i = 3 ;               //分配在棧上
object o = i ;            //隱式裝箱操作,int i 在堆上
object b = (object)i ;    //顯示裝箱操作
----------------------
//拆箱 unboxing
int j = (int) o ;         //顯示拆箱(將對象o拆箱爲int類型)
----------------------
int k = b ;               //error!!, 不能隱式拆箱

https://www.cnblogs.com/zjtao/p/11345442.html

深度解讀裝箱:裝箱是先爲object變量在堆上開闢一方空間,然後將棧上存放的數值轉存到堆上,棧上殘留的就是堆上的值所在的位置-------存儲地址,所以這樣就造成什麼問題呢?訪問速度慢(先訪問棧,然後再去訪問堆,訪問堆的速度遠遠慢於訪問堆的速度)且佔用內存大(需要爲變量在堆上開闢空間)

靈魂拷問:爲什麼訪問速度慢且佔用內存大,還要使用引用數據呢?直接用值數據不就可以了,棧上存放數值,直接讀取數值。

因爲運用引用類型可以表示同一對象的不同屬性,對其進行封裝。

eg:

基本數據都是單一的值"hello"123 true,值和值之間沒有聯繫

比如,表示一個人的信息(name gender age)

var name="孫悟空";
var gender='男';
var age=18;

創建的變量都是獨立,不能成爲一個整體,比如,gender也可以表示豬八戒的性別,

obj.name="孫悟空";
obj.gender='男';
obj.age=18;

對比之前就可以看出對象表示一個人的信息有整體性,相當於把多個變量放到一個箱子中

https://blog.csdn.net/shang_0122/article/details/103677259

聲明引用類型

class

interface

delegate

C#數據類型與SQL sever數據類型對應關係

 

本文到此就暫時結束了,感謝閱讀,敬請斧正~ 💗💗💗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章