2009-05-29 185 views
9

我最近進行了一次brainbench考試,得到高分,但有幾個問題對我來說很難。也許是因爲英語不是我的母語......其中一個問題是:什麼是類型安全?

以下哪一項描述了類型安全性?

  1. 用於確保在CLR
  2. 從存儲器泄漏的保護,不允許非託管訪問
  3. 的結果的參考和值類型的安全性的編程構造的具體CLR-特徵提供保證,即類型可以不能訪問他們自己AppDomain以外的存儲器
  4. 通過使用強名稱密鑰來保護組件及其類型的機制
  5. 處理分配對象始終以兼容方式訪問的保證概念

我認爲這是1或5,但無論如何,他們聽起來怪我:(

你覺得呢?

+1

我以前做過M $考試,有幾個問題,這只是〜〜〜不〜作出感 – 2009-05-29 21:49:55

+1

你的問題理解英語可能是做多整個英語被濫​​用/改變的方式太多了。很多單詞至少可以有5種不同的含義(不包括技術術語),而由多個單詞組成的單詞可以很容易地與組成單詞的單詞很少或沒有關係。有一個系列中有兩個引用,我讀了關於英語語言1:「爲什麼你堅持要通過調用別的東西來命名某些東西」和2:「很難溝通,爲什麼要讓一個詞意味着更難很多東西?「 – Bryan 2009-05-29 22:12:07

+0

,我會說它的5 – Bryan 2009-05-29 23:30:16

回答

10

其實我認爲這是選擇5,因爲類型安全與安全無關。

+0

你們兩個應該打出來:) – Alan 2009-05-29 21:47:07

1

選擇5 處理與分配的對象總是以兼容的方式訪問

類型安全涉及確保當你創建一個Foo,你不能把它當作一個保證的概念酒吧。如果您不知道它是什麼類型(或不能保證),那麼您編寫的代碼可能無法按預期工作。

1

類型安全的語言將確保(在編譯時)不會調用類型的不兼容方法,例如,一個int類型的length()。非類型安全的語言將在運行時找出它。所以,選擇5.

0

它是選項#5。類型安全是一種保證,而不是具體的事情。 .NET代碼而不是可能是類型安全的...說在程序集使用不安全代碼執行非託管調用(PInvoke)的情況下。在JIT期間,會執行一個過程來驗證被碰撞的類型是否確實是類型安全的。我不知道這個過程的任何細節,但是如果一個jitted類型通過,那麼它可以被認爲是安全的。

6

類型安全是設計,在[羅賓·米爾納] [1]的有關ML編程著名的口號好語言的特點:良好類型的程序不能出差錯

標語在正確理解之前需要解壓縮,但它基本上意味着程序不會因爲運行時類型錯誤而失敗,即應用於構造函數或函數的參數具有不兼容類型的值時。

考慮一種允許整數,整數函數作爲第一類值,函數抽象和部分函數應用的語言,並將通常的整數算術運算符定義爲二進制函數。類型安全屬性是編譯器強制執行的,以確保添加運算符的兩個參數都是減少爲整數而不是函數的表達式。如果一個程序的類型很好,那麼編譯器可以爲它發出一個可執行的對象。否則,它會標記編程錯誤並中止。

4

根據下面提供的MSDN鏈接, http://msdn.microsoft.com/en-us/library/hbzz1a9a.aspx

類型安全代碼只訪問它有權訪問的內存位置。 (對於本次討論,類型安全特別指的是內存類型的安全性,不應與更廣義的類型安全相混淆。)例如,類型安全代碼無法從另一個對象的專用字段中讀取值。它只能以明確的,允許的方式訪問類型。

1

類型安全與安全性無關。這是關於確保將兼容的實例分配給正確的變量。

要了解更多有關類型安全,是指type safety in .NET

相關問題