強型別和弱型別的變數都有兩個屬性:型別和值。
強型別的變數型別是不能改變的,弱型別的變數型別是隨需改變的,這是強弱的真正含義。
我們在編寫c#**時,變數型別是明確的,不可更改的,如string就是string,int就是int,這就是強型別,好處:
1.能夠享受**提示功能
2.能夠獲得重構工具的支援
3.能夠在編譯期發現更多錯誤
弱型別:object,在c#中object是所有型別的基類,任何物件都可以使用object來引用。可是一旦轉化成object的變數之後,**提示便消失了;即使我們「明確」物件的確切型別,也必須通過cast才能使用——更何況它形成了一種被「濫用」或「誤用」的機會。例如一段錯誤**可能會傳入乙個不符合約定型別的物件,那麼就會造成錯誤。更嚴重的是,這樣的錯誤可能只要在 「執行時」才能被發現,編譯器對此無能為力。
[泛型的概念]
(1)沒有泛型的時候,所有的物件都是以object為基礎,如果要使用時必須進行強制型別轉換,如果對於值型別,則會導致不斷拆箱裝箱的過程,對系統消耗很大。
(2)使用泛型時不需要通過object類進行裝箱拆箱,使用的時候都會是確定的型別。
(3)泛型的概念一開始是由集合引入,因為集合中的型別都是基於object類。可以在集合中使用泛型類。
(4)泛型不僅僅用於集合,還可以用於委託、介面和方法。
泛型的優點:高效能、型別安全、**的重用與擴充套件
C語言中強型別 弱型別
強型別 以初始化的全域性資料 弱型別 未初始化的全域性資料 main.c includeshort x 10 short y 10 void func int main test.c int x void func 上邊列印出的結果為x 20,y 0。為什麼呢?乙個工程中有多個檔案,編譯時分開編譯。...
強型別與弱型別,靜態型別和動態型別
首先強弱是相對的。強型別 每個變數和物件都必須宣告型別,在編譯時確定好型別了,執行時不能更改。偏向於不容忍隱式型別轉換。譬如說haskell的int就不能變成double。弱型別 編譯時不確定型別,執行時根據語義確定是哪種型別。通俗地說,弱型別偏向於容忍隱式轉換,把不同型別的變數放在一起運算。靜態型...
C 泛型型別 泛型方法
泛型會宣告型別引數 泛型的消費者需要提供型別引數來把佔位符型別填充 public class stack var stack newstack int stack.push 2 stack.push 3 int x stack.pop 2int y stack.pop 3stack open typ...