2009-05-29 133 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

相关问题