在 c# 中,變數分為以下幾種型別:
值型別(value types)
引用型別(reference types)
以下**中所有型別都是值型別:值型別變數宣告後,不管是否已經賦值,編譯器為其分配記憶體。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-mdhz8cng-1617329566058)(
一:變數的基本型別:
(1):整形有:
sbyte、byte、int、long、short、uint、ulong、ushort
(2):浮點型有:
雙精度 :decimal、double、
單精度 :float
單精度型別與多精度型別的區別
(1)在記憶體中占有的位元組數不同
*雙精度浮點數在機內佔8個位元組(2)有效數字位數不同
*單精度浮點數有效數字8位
*雙精度浮點數有效數字16位
(3)表示數的範圍不同
*單精度浮點數的表示範圍:-3.40e+38 ~3.40e+38
雙精度浮點數的表示範圍:-1.79e+308~+1.79e+308
(4)在程式中處理的速度不同:
一般說,cpu處理單精度浮點數的速度比處理雙精度的浮點數快。
如需得到乙個型別或乙個變數在特定平台上的準確尺寸,可以使用 sizeof 方法。表示式 sizeof(type) 產生以位元組為單位儲存物件或型別的儲存尺寸。
上**:
using system;
", sizeof(int)); // 4
console.readline();}}
}
(3)物件(object)型別物件(object)型別 是 c# 通用型別系統(common type system - cts)中所有資料型別的終極基類。object 是 system.object 類的別名。所以物件(object)型別可以被分配任何其他型別(值型別、引用型別、預定義型別或使用者自定義型別)的值。但是,在分配值之前,需要先進行型別轉換。
(4)動態(dynamic)型別
您可以儲存任何型別的值在動態資料型別變數中。這些變數的型別檢查是在執行時發生的。
宣告動態型別的語法:
dynamic = value;
例如:
dynamic d = 20;
動態型別與物件型別相似,但是物件型別變數的型別檢查是在編譯時發生的,而動態型別變數的型別檢查是在執行時發生的。
(5)字串(string)型別
字串(string)型別 允許您給變數分配任何字串值。字串(string)型別是 system.string 類的別名。它是從物件(object)型別派生的。字串(string)型別的值可以通過兩種形式進行分配:引號和 @引號。
例如:
string str = "runoob.com";
乙個 @引號字串:
@"runoob.com";
c# string 字串的前面可以加 @(稱作"逐字字串")將轉義字元(\)當作普通字元對待,比如:
string str = @"c:\windows";
等價於:
string str = "c:\\windows";
@ 字串中可以任意換行,換行符及縮排空格都計算在字串長度之內。
string str = @"";
二:值型別和引用型別(1 )引用型別:可派生出新型別引用型別不包含儲存在變數中的實際資料,但它們包含對變數的引用。
換句話說,它們指的是乙個記憶體位置。使用多個變數時,引用型別可以指向乙個記憶體位置。如果記憶體位置的資料是由乙個變數改變的,其他變數會自動反映這種值的變化。
引用型別有:
陣列(派生於system.array)
使用者用定義的以下型別:
類:class(派生於system.object);
介面:inte***ce(介面不是乙個「東西」,所以不存在派生於何處的問題。anders在《c# programming language》中說,介面只是表示一種約定[contract]);
委託:delegate(派生於system.delegate)。
object(system.object的別名);
字串:string(system.string的別名)。
動態型別:dynamic
引用型別儲存位址 。
(2):值型別:不可派生出新型別
值型別變數宣告後,不管是否已經賦值,編譯器為其分配記憶體。
值型別有:
結構體:struct(直接派生於system.valuetype);
整型:sbyte(system.sbyte的別名),short(system.int16),int(system.int32),long(system.int64),byte(system.byte),ushort(system.uint16),uint(system.uint32),ulong(system.uint64),char(system.char);
浮點型:float(system.single),double(system.double);
decimal型:decimal(system.decimal)。
bool型:bool(system.boolean的別名);
列舉:enum(派生於system.enum);
可空型別(派生於system.nullable泛型結構體,t?實際上是system.nullable的別名)。
值型別儲存值。
自學之C 特殊資料型別
了解隱式型別 匿名型別和dynamic型別 掌握可空型別的用法 了解特性的用法 可選引數又稱預設引數 修飾符 返回型別 方法名 引數1 引數n,可選引數1 可選引數n 其中,必選引數一定會在可選引數的前面,而且在方法呼叫的時候必須要給引數,否則會發生編譯報錯。region bage using sy...
C語言自學篇(三)。。。C 資料型別
在 c 語言中,資料型別指的是用於宣告不同型別的變數或函式的乙個廣泛的系統。變數的型別決定了變數儲存占用的空間,以及如何解釋儲存的位模式。c 中的型別可分為 1.基本型別 它們是算術型別,包括兩種型別 整數型別和浮點型別。型別 儲存大小 值範圍char 1位元組 128到127 或 0到255 un...
Python自學筆記3 資料型別
pytho的數值型別包括 name purpose int整型 long 長整型 python3中沒有 float 浮點數complex 複數 示例 x 3 整數f 3.141529 浮點數 name python 字串 big 358315791l 長整型z complex 2 3 2 3i 複數...