我們可以使用指針作為一個例子。在C++中擁有一個指針,你能zi you地把它強制轉換成為任何類型,包括做出諸如把一個int*(整型指針)強制轉換成一個double *(雙精度指針)這樣的傻事。只要內存支持這種操作,它就能工作。這并不是你所想象的企業級編程語言的類型安全。
原則性的問題,C#實施最嚴ge的類型安全,以保護自己及垃圾收集器(garbage collector)。因此必須遵守C#中一些有關變量的規則:
你不能使用沒有初始化的變量。對于對象的成員變量,編譯器負責清零。而局部變量,則由你負責清零。當你使用一個沒有初始化的變量時,編譯器會教你怎么做。優點是能夠避免由于使用不經初始化的變量計算結果而導致的錯誤,而你還不知道這些奇怪的結果是如何產生的。
C#取消了不安全的類型轉換。不能把一個整型強制轉換成一個引用類型(如對象),而當向下轉換時,C#驗證這種轉換是正確的。(也就是說,派生類真的是從向下轉換的那個類派生出來的。)
邊界檢查是C#的一部分。再也不會出現這種情況:當數組實際只定義了n-1個元素,卻超額地使用了n個元素。
算術運算有可能溢出結果數據類型的范圍。C#允許在語句級或應用程序級檢測這些運算。在允許檢查溢出的情況下,當溢出發生時將會引發一個異常。
在C#中,被傳遞的引用參數是類型安全的。
新聞熱點
疑難解答
圖片精選