我最近参加了一次脑力训练考试,得到了很高的评价,但有几个问题对我来说很难。也许是因为英语不是我的母语......其中一个问题是:
以下哪一项描述了类型安全?
我认为它是1或5,但无论如何它们听起来都很奇怪:(
您怎么看?
答案 0 :(得分:10)
实际上我认为它是选择5,因为类型安全与安全无关。
答案 1 :(得分:7)
类型安全是一种语言的特色,旨在使[罗宾米尔纳] [1]关于ML编程的着名口号变得更好:良好类型的程序不会出错
口号需要一些解包才能正确理解,但它基本上意味着程序不会因为运行时类型错误而失败,即当应用于构造函数或函数的参数具有不兼容类型的值时。
考虑一种允许整数,整数函数作为第一类值,函数抽象和部分函数应用的语言,并将通常的整数算术运算符定义为二元函数。类型安全的属性是编译器强制执行的操作,以确保加法运算符的两个参数都是减少为整数而不是函数的表达式。如果程序是良好类型的,那么编译器可以为它发出可执行对象。否则,它会标记编程错误并中止。
答案 2 :(得分:4)
根据下面提供的msdn链接, http://msdn.microsoft.com/en-us/library/hbzz1a9a.aspx
类型安全代码仅访问其有权访问的内存位置。 (对于此讨论,类型安全特别指内存类型安全,不应在更广泛的方面与类型安全混淆。)例如,类型安全代码无法从另一个对象的私有字段读取值。它只能以明确定义的,允许的方式访问类型。
答案 3 :(得分:1)
选择5 处理分配对象的保证的概念总是以兼容的方式访问
类型安全处理确保在创建Foo时,不能将其视为条形图。如果您不知道它是什么类型(或不保证),您编写的代码可能无法按预期工作。
答案 4 :(得分:1)
类型安全语言将确保(在编译时)您不会在类型上调用不兼容的方法,例如int类型的length()。非类型安全语言将在运行时解决。所以,选择5。
答案 5 :(得分:1)
正如其他人所说,选择5 ......
一般情况下 - 对于.NET,请查看通用类型系统(CTS),它可以实现跨语言的内容和类型安全性。
答案 6 :(得分:1)
来自MSDN参考:最好的答案是#3:见http://msdn.microsoft.com/en-us/library/hbzz1a9a(v=vs.80).aspx
答案 7 :(得分:1)
类型安全与安全无关。这是关于确保将兼容的实例分配给正确的变量。
要了解有关类型安全的更多信息,请参阅type safety in .NET
答案 8 :(得分:0)
选项#5。类型安全是一种保证,而不是具体的事情。 .NET代码不可能是类型安全的...比如说程序集使用不安全的代码来执行非托管调用(PInvoke)。在JIT期间,执行一个过程来验证被jitted的类型确实是类型安全的。我不知道有关这个过程的任何细节,但如果一个jitted类型通过,那么它被认为是可验证的类型安全。