強資料型別和弱資料型別

ForTechnology發表於2013-02-25

強型別定義語言  
  
一種總是強制型別定義的語言。JavaPython是強制型別定義的。如果你有一個整數,如果不顯示地進行轉換,你不能將其視為一個字串

 

弱型別定義語言  
   
一種型別可以被忽略的語言,與強型別定義相反。VBScript是弱型別定義的。在VBScript中,可以將字串  '12 '  和整數  3  進行連線得到字串  '123 ',然後可以把它看成整數  123,而不需要顯示轉換。

C++  是強型別語言,因為你定義了一個整型變數後,就不能付一個字元型資料給這個變數(除非你用強制型別轉換)像VBPHP,這些語言, 就屬於弱型別語言,因為你使用一個變數,可以不經過定義。  而且當你付不同型別資料給這個變數, 也不會編譯出錯,而且是允許這樣做的。

 

C#

int i=3;  i="a";    不可以

javaScript

var i=3;  i="a";  可以

強型別是在編譯的時候就確定型別的資料,在執行時型別不能更改,而弱型別在執行的時候才會確定型別。沒有好不好,二者各有好處,強型別安全,因為它事先已經確定好了,而且效率高。弱型別更靈活,但是效率低,而且出錯概率高


   C#
是強型別語言,通俗地講,便是指C#中的變數在開發時的型別便是明確的:String便是StringInt32就是Int32,毫無爭議。強型別的好處有很多

能夠享受程式碼提示功能

能夠獲得重構工具的支援

能夠在編譯期發現更多錯誤

不過C#也不是絕對的強型別語言,因為它也有弱型別,那就是Object。我們知道Object是所有型別的最終基類,任何型別的物件都可以使用Object來引用。可是一旦轉化成Object的變數之後,程式碼提示便消失了;即使我們明確物件的確切型別,也必須通過Cast才能使用——更何況它形成了一種被濫用誤用的機會。例如一段錯誤程式碼可能會傳入一個不符合約定型別的物件,那麼就會造成錯誤。更嚴重的是,這樣的錯誤可能只要在執行時才能被發現,編譯器對此無能為力。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-754691/,如需轉載,請註明出處,否則將追究法律責任。

相關文章