在C# 中,變數分為一下幾種型別:
- 值型別(Value types)
- 參考型別(Reference types)
- 指標型別(Pointer types)
首先看到的是值型別(Value type)
值型別變數可以直接分配給一個值,他們是從類 System.ValueType中派生的,
值型別直接包含資料,比如int、char、float,它們分別存盤數字、字符、浮點數,當您宣告一個int型別時,系統分配記憶體來存盤值,
下表會列舉可用的值型別
| 型別 | 描述 | 范圍 | 默認值 |
| bool | 布林值 | True或者False | false |
| byte | 8位無符號整數 | 0到255 | 0 |
| char | 16位Unicode字符 | U +0000到U +ffff | '\0' |
| decimal | 128位精確的十進制值,28-29有效位數 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
| 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 |
| 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 |
如果需要得到一個型別或者一個變數在特定平臺上的大小,可以使用sizeof方法,運算式sizeof(type)產生以位元組為單位存盤物件或型別的存盤尺寸,
class Program
{
static void Main(string[] args)
{
Console.WriteLine($"Size of int:{sizeof(int)}");
Console.ReadLine();
}
}
當上面的代碼被編譯和執行時,它會產生下列結果:
Size of int:4
參考型別(Reference types)
參考型別不包含存盤在變數中的實際資料,但他們包含對變數的參考
換句話說,他們指的是一個記憶體位置,使用多個變數時,參考型別可以指向一個記憶體位置,如果記憶體位置的資料是由一個變數改變的,其他變數會自動反應這種值得變化,內置得參考型別有:object,dynamic和string,
物件 (Object )型別
物件(Object )型別是C#通用型別系統中所有資料型別得終極基類,Object是System,Object類得別名,
所以物件(Object)型別可以分配任何其他型別(值型別,參考型別,預定義型別或用戶自定型別)的值,但是在分配前,需要先進行型別轉換,
這就涉及到裝箱,拆箱
當一個值型別轉換為物件型別時,則被稱為裝箱;另一方面,當一個物件型別轉換為值型別時,則被稱為拆箱,
object obj;
obj = 100; //這是裝箱
動態(Dynamic)型別
可以存盤任何型別的值在動態資料型別變數中,這些變數的型別檢查是在運行時發生的,
宣告動態型別的語法:
dynamic <variable_name> = value;
例如
dynamic d =20;
動態型別與物件型別相似,但是物件型別變數的型別檢查是在編譯時發生的,而動態型別變數的型別檢查時運行時發生的,
字串(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 = @"<script type=""text/javascript""> <!-- --> </script>";
$字符可以用來簡寫引數
Console.WriteLine("Size of int: {0}", sizeof(int)); //可以使用$直接簡寫為: Console.WriteLine($"Size of int:{sizeof(int)}");
用戶自定義參考型別有:class、interface或delegate,
指標型別(Pointer types)
指標型別變數存盤另一個型別的記憶體地址,C#中的指標與C或C++中的指標有相同的功能,
宣告指標型別的語法:
type* indentifier;
例如:
char* cptr; int* iptr;
后面會在C# 不安全代碼中總結討論指標型別,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/108786.html
標籤:.NET Core
上一篇:[Abp vNext 原始碼分析] - 8. 審計日志
下一篇:ABP進階教程0 - 目錄
