我最近参加了一次脑力测试,获得了高分,但是有几个问题对我来说很难。也许是因为英语不是我的母语......其中一个问题是:

以下哪一项描述了类型安全?

  1. 用于确保 CLR 中引用和值类型安全的编程构造
  2. 防止由于禁止非托管访问而导致内存泄漏
  3. 特定于 CLR 的功能可确保类型不能访问其自己的 AppDomain 之外的内存
  4. 一种通过使用强命名密钥来保护程序集及其类型的机制
  5. 这个概念涉及确保分配的对象始终以兼容的方式访问

我认为是 1 或 5,但无论如何,它们对我来说听起来很奇怪:(

你怎么认为?

有帮助吗?

解决方案

实际上我认为是选择 5,因为类型安全与安全性无关。

其他提示

类型安全 是一种语言的特性,旨在兑现 [Robin Milner][1] 关于 ML 编程的著名口号: 类型良好的程序不会出错.

这个口号需要一些解包才能正确理解,但它基本上意味着程序不会因为运行时类型错误而失败,即当应用于构造函数或函数的参数具有不兼容类型的值时。

考虑一种语言,它允许整数、整数函数作为第一类值、函数抽象和部分函数应用,并将常用的整数算术运算符定义为二元函数。类型安全属性是编译器强制执行的,以确保加法运算符的两个参数都是简化为整数而不是函数的表达式。如果程序类型良好,则编译器可以为其生成可执行对象。否则,它会标记编程错误并中止。

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

类型安全代码仅访问其有权访问的内存位置。(对于本讨论,类型安全特指内存类型安全,不应与更广泛的方面的类型安全混淆。)例如,类型安全代码无法从另一个对象的私有字段读取值。它仅以明确定义的、允许的方式访问类型。

选择5保证始终以兼容方式访问分配的对象的概念

类型安全涉及确保当您创建 Foo 时,不能将其视为 Bar。如果您不知道它是什么类型(或不能保证),您编写的代码可能无法按预期工作。

类型安全语言将确保(在编译时)您不会在类型上调用不兼容的方法,例如int 类型上的 length() 。非类型安全语言会在运行时解决这个问题。所以,选择5。

正如其他人所说,选择5...

一般来说,对于 .NET,请查看通用类型系统 (CTS),它支持跨语言内容和类型安全。

查看: http://en.wikipedia.org/wiki/Type_safety ...

这是选项#5。类型安全是一种保证,而不是具体的东西。.NET 代码可以 不是 类型安全...例如,程序集使用不安全代码执行非托管调用 (PInvoke)。在 JIT 过程中,会执行一个过程来验证被 jitted 的类型确实是类型安全的。我不知道有关此过程的任何细节,但如果 jitted 类型通过,那么它被认为是可验证类型安全的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top