一、強型別 vs 弱型別
1. C#是強型別語言,C#中的“變數”在開發時其型別便一定要事先宣告好:String便是String,Int32就是Int32。
2. php就是弱型別語言。開發時不用事先宣告型別,等程式執行時,才自己自動判斷是什麼型別。
二、變數有兩種型態
value type 及reference type
1. 實質型態 value type (有分兩種)
(1) 結構 (Strut)
- 數值型別:
ex 整數型別(byte,char,int,...)、
浮點類型(double,float)、
decimal(精度類型)
- 布林型別
- 使用者自訂型別:
ex 自己宣告為struct的自訂結構類別
(2)列舉 (enum) :各種自訂的列舉
2. 參考型態 reference type
顧名思義儲存的是一個參考位址而非實體的值。
所以會有兩個變數同時對應到同一個實體位址,
而導致互相修改與影響的情形。
內建的參考型別有:
dynamic
object
string (*string是特殊的參考型別,原型是char[]。C#中可以直接將其視為實值型別)
另可以關鍵字 class、interface、delegate進行宣告
三、stack vs heap
1. stack memory(棧):
放 變數 或reference(引用),存取速度較快,時間較短較頻繁採LIFO
2. heap memory (堆):
放 new出來的物件,運行時動態分配內存,存取速度較慢,較大較不頻繁
例如Object obj=new Object();
前面的obj是引用會放在stack, 等號後面的Object是new出來的會放在heap