C#有兩種類型:值類型和引用類型。值類型的變數直接包含數據,引用類型的變數則包含對變數(對象)的引用。對於引用類型,兩個變數可以引用同一個對象,所以,對一個變數的操作可能會影響另一個變數引用的對象。而對於值類型,每個變數都有自己的數據副本,因此,對一個變數的操作不會影響到另一個變數(ref和out參 ...
C#有兩種類型:值類型和引用類型。值類型的變數直接包含數據,引用類型的變數則包含對變數(對象)的引用。對於引用類型,兩個變數可以引用同一個對象,所以,對一個變數的操作可能會影響另一個變數引用的對象。而對於值類型,每個變數都有自己的數據副本,因此,對一個變數的操作不會影響到另一個變數(ref和out參數變數除外)。
一、值類型
C#中值類型分為簡單類型、枚舉類型、結構類型和可以為null的值類型。
- 簡單類型
- 有符號的整形:sbyte,short,int,long.
- 無符號的整形:byte,ushort,uint,ulong
- Unicode字元:char,表示一個UTF-16字元
- IEEE二進位浮點數:float,double
- 高精度十進位浮點數:decimal
- 布爾類型:bool,用於表示布爾值(true和false)
- 枚舉類型
- 格式為
enum E {...}
的用戶定義類型
- 格式為
- 結構類型
- 格式為
struct S {...}
的用戶定義類型,struct類型定義了包含數據成員和函數成員的數據結構,與類類型相似,但結構類型是值類型,存儲在棧上,無法被繼承,並且所有結構類型均隱式繼承自 object 類型
- 格式為
- 可以為null的值類型
- 值為
null
的其他所有值類型的擴展
- 值為
- 元組值類型
- 格式為
(T1,T2, ...)
的用戶定義類型
- 格式為
二、引用類型
C#中引用類型分為類類型、介面類型、數組類型和委托類型
- 類類型
- 其他所有類型的最終基類:object
- Unicode字元串:string,表示一個UTF-16字元串
- 格式為
class TestClass { //方法、屬性、欄位、事件、委托 //和嵌套類 }
的用戶定義類型,class 類型定義了包含數據成員(欄位)和函數成員(方法、屬性等)的數據結構,一個類類型只能繼承一個基類,但一個類能實現多個介面。
- 介面類型
- 格式為
interface I {...}
的用戶定義類型,定義了所有類繼承介面時應遵循的語法協議。包含了屬性、方法和事件的聲明,這些介面成員的定義(代碼實現)必須由實現介面的類或結構完成。介面可以繼承自多個基介面,類和結構可以實現多個介面。
- 格式為
- 數組類型
- 一維和多維數組,例如int[] 和 int[,]
- 委托類型
- 格式為
delegate int D(...)
的用戶定義類型,表示對具有特定參數列表和返回類型的方法的引用。
- 格式為