在2.2.1我們對C#的基本資料類型有了基本了解。C#将資料類型分為:值類型、引用類型和指針類型。
通用類型系統支援兩種一般類别的類型,每一類都細分成子類别:
q 值類型:值類型直接包含它們的資料,值類型的執行個體要麼在堆棧上,要麼内聯在結構中。值類型可以是内聯的(由運作庫實作)、使用者定義的或枚舉的。有關内聯值類型的清單,請參見 .NET Framework 類庫。
q 引用類型:引用類型存儲對值的記憶體位址的引用,位于堆上。引用類型可以是自描述類型、指針類型或接口類型。引用類型的類型可以由自描述類型的值來确定。自描述類型進一步細分成數組和類類型。類類型是使用者定義的類、裝箱的值類型和委托。
以下表格就是對通用類型系統的一個分類彙總
資料類型分類表及關鍵字
值類型
枚舉
Enum
内置類型
結構
整數:sbyte、byte、char、short、ushort、int、uint、long、ulong
浮點:float、double
高精度:decimal
布爾:bool
無類型:void
引用
類型
根對象:object
字元串:string
類:class
委托:delegate
接口:interface
數組:Array
指針類
表:資料類型分類表及關鍵字
大多數程式設計語言提供内置的資料類型(比如整數和浮點數),這些資料類型會在作為參數傳遞時被複制(即,它們通過值來傳遞)。在 .NET Framework 中,這些稱為值類型。運作庫支援兩種值類型:
q 内置值類型:.NET Framework 定義了内置值類型(例如int、float、double、bool等),它們對應于程式設計語言使用的基中繼資料類型并與之相同。
q 使用者定義的值類型:派生自 System.ValueType 或 System..Enum 的您自己的值類型。
引用類型的變量又稱為對象,可存儲對實際資料的引用。引用類型變量的指派隻複制對對象的引用,而不複制對象本身。基于值類型的變量直接包含值。将一個值類型變量賦給另一個值類型變量時,将複制包含的值。這與引用類型變量的指派不同,引用類型變量的指派隻複制對對象的引用,而不複制對象本身。所有的簡單類型(C# 語言的組成部分)均為 .NET Framework 系統類型的别名。例如,int 是 System.Int32 的别名。
static void Main(string[] args)
{
System.Console.WriteLine("byte:{0}<--->{1}", byte.MinValue, byte.MaxValue); //0 .. 255
System.Console.WriteLine("sbyte:{0}<--->{1}", sbyte.MinValue, sbyte.MaxValue); //-128 .. 127
System.Console.WriteLine("short:{0}<--->{1}", short.MinValue, short.MaxValue); //-32,768 .. 32,767
System.Console.WriteLine("ushort:{0}<--->{1}", ushort.MinValue, ushort.MaxValue);//0 .. 65,535
System.Console.WriteLine("int:{0}<--->{1}", int.MinValue, int.MaxValue);//-2,147,483,648 .. 2,147,483,647
System.Console.WriteLine("uint:{0}<--->{1}", uint.MinValue, uint.MaxValue); //0 .. 4,294,967,295
System.Console.WriteLine("long:{0}<--->{1}", long.MinValue, long.MaxValue); //9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807
System.Console.WriteLine("ulong:{0}<--->{1}", ulong.MinValue, ulong.MaxValue); //0 .. 18,446,744,073,709,551,615
System.Console.WriteLine("float:{0}<--->{1}", float.MinValue, float.MaxValue);//-3.402823e38 .. 3.402823e38
System.Console.WriteLine("double:{0}<--->{1}", double.MinValue, double.MaxValue); //-1.79769313486232e308 .. 1.79769313486232e308
System.Console.WriteLine("decimal:{0}<--->{1}", decimal.MinValue, decimal.MaxValue);//-79228162514264337593543950335 .. 79228162514264337593543950335
}
C#提供了多種數值類型的資料:整型、浮點和高精度。提供這些不同的資料類型的原因是,不同的資料類型的容量是預定的。你可以把資料類型想象為一個個不同規格的盒子,每種規格的盒子的容量都是有限的。可以使用以下代碼觀察到不同資料類型的容量:
在聲明數值類型變量的時候,你需要估算下,你需要的最大、最小數值分别是多少,正确的選擇資料類型。無符号的資料類型在通常情況下我們不去使用,如果你需要存儲的資料是整型,筆者建議你優先考慮使用int,如果你需要存儲的是浮點類型,筆者建議你優先考慮使用double。
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805191