代码之家  ›  专栏  ›  技术社区  ›  nightcoder

什么是类型安全?

  •  9
  • nightcoder  · 技术社区  · 16 年前

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

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

    1. 用于确保CLR中引用类型和值类型的安全性的编程构造。
    2. 由于不允许非托管访问而导致的内存泄漏保护
    3. 特定于clr的特性确保类型不能在自己的appdomain之外访问内存。
    4. 一种通过使用强命名键来保护程序集及其类型的机制。
    5. 处理确保分配的对象总是以兼容的方式访问的概念。

    我想是1或5,但我觉得他们听起来很奇怪:(

    你怎么认为?

    9 回复  |  直到 16 年前
        1
  •  10
  •   Bevan    16 年前

    实际上,我认为这是第五种选择,因为类型安全与安全无关。

        2
  •  7
  •   james woodyatt    16 年前

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

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

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

        3
  •  4
  •   Clyde    12 年前

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

    类型安全代码只访问它被授权访问的内存位置。(在本讨论中,类型安全专门指内存类型安全,在更广泛的方面不应与类型安全混淆。)例如,类型安全代码不能从另一个对象的私有字段中读取值。它只能以定义良好的、允许的方式访问类型。

        4
  •  1
  •   Dave Bauman    16 年前

    选择5 处理确保分配的对象总是以兼容的方式访问的概念。

    类型安全处理确保创建foo时不能将其视为一个酒吧。如果您不知道它是什么类型(或者不保证),那么您编写的代码可能无法按预期工作。

        5
  •  1
  •   Andrew Coleson    16 年前

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

        6
  •  1
  •   Gabriel    16 年前

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

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

    退房: http://en.wikipedia.org/wiki/Type_safety

        7
  •  1
  •   Yogesh P    14 年前

    来自msdn参考:最好的答案是3:请参阅 http://msdn.microsoft.com/en-us/library/hbzz1a9a(v=vs.80).aspx

        8
  •  1
  •   ragingasiancoder Shivam    9 年前

    类型安全与安全无关。这是为了确保将兼容的实例分配给正确的变量。

    要了解有关类型安全的更多信息,请参阅 type safety in .NET

        9
  •  0
  •   jrista    16 年前

    这是选项5。类型安全是一种保证,而不是具体的事情。.NET代码可以 类型安全……假设程序集使用不安全的代码执行非托管调用(PInvoke)。在JIT期间,将执行一个过程,以验证正在进行JIT的类型确实是类型安全的。我不知道关于这个过程的任何细节,但是如果一个Jitted类型通过了,那么它被认为是可验证的类型安全的。