Вопрос

Недавно у меня был экзамен brainbench, я получил высокую оценку, но там была пара вопросов, которые были трудными для меня.Может быть, это потому, что английский не является моим родным языком...Один из вопросов заключается в следующем:

Что из приведенного ниже описывает типобезопасность?

  1. Программная конструкция, используемая для обеспечения безопасности типов ссылок и значений в среде CLR
  2. Защита от утечки памяти в результате запрета неуправляемого доступа
  3. Специфичная для CLR функция, гарантирующая, что типы не могут обращаться к памяти за пределами своего собственного домена приложения
  4. Механизм, созданный для защиты сборок и их типов с помощью ключей со строгими именами
  5. Концепция, касающаяся гарантий того, что доступ к выделенным объектам всегда осуществляется совместимыми способами

Я думаю, что это 1 или 5, но они все равно звучат для меня странно:(

А ты как думаешь?

Это было полезно?

Решение

На самом деле я думаю, что это Выбор 5, потому что безопасность типов не имеет ничего общего с Безопасностью.

Другие советы

Безопасность типа это особенность языка, разработанная для того, чтобы воплотить в жизнь знаменитый лозунг [Робина Милнера] [1] о программировании на ML: хорошо типизированные программы не могут пойти наперекосяк.

Слоган нуждается в некоторой распаковке, прежде чем его можно будет правильно понять, но в основном это означает, что программы не могут завершаться сбоем из-за ошибки типа среды выполнения, т.е.когда параметры, применяемые к конструктору или функции, имеют значения несовместимого типа.

Рассмотрим язык, который допускает использование целых чисел, целочисленных функций в качестве значений первого класса, абстракцию функций и частичное применение функций и который определяет обычные целочисленные арифметические операторы как двоичные функции.Свойство безопасности типов - это то, что компилятор применяет для обеспечения того, чтобы оба аргумента оператора сложения были выражениями, которые сводятся к целым числам, а не к функциям.Если программа хорошо типизирована, то компилятор может создать для нее исполняемый объект.В противном случае он помечает ошибку программирования и прерывает работу.

Согласно ссылке msdn, приведенной ниже, http://msdn.microsoft.com/en-us/library/hbzz1a9a.aspx

Типобезопасный код обращается только к тем ячейкам памяти, доступ к которым ему разрешен.(В данном обсуждении безопасность типов конкретно относится к безопасности типов памяти, и ее не следует путать с безопасностью типов в более широком смысле.) Например, типобезопасный код не может считывать значения из закрытых полей другого объекта.Он обращается к типам только четко определенными, допустимыми способами.

Вариант 5 Концепция, касающаяся гарантий того, что доступ к выделенным объектам всегда осуществляется совместимыми способами

Безопасность типов связана с гарантией того, что при создании Foo вы не сможете рассматривать его как панель.Если вы не знаете, какой это тип (или не гарантированы), код, который вы пишете, может просто работать не так, как ожидалось.

Типобезопасные языки гарантируют (во время компиляции), что вы не вызываете несовместимые методы для типа, напримерlength() для типа int.Нетипобезопасные языки разберутся с этим во время выполнения.Итак, выбор 5.

Как уже говорили другие, выбор 5...

В общем, для .NET ознакомьтесь с Common Type System (CTS), которая обеспечивает межъязыковую поддержку и безопасность типов.

Проверьте: http://en.wikipedia.org/wiki/Type_safety ...

Это вариант №5.Типобезопасность - это гарантия, а не конкретная вещь.Это возможно для .ЧИСТЫЙ код для нет будьте типобезопасны ... скажем, в случае, если сборка использует небезопасный код для выполнения неуправляемых вызовов (PInvoke).Во время JIT выполняется процесс, который проверяет, что передаваемые JIT типы действительно типобезопасны.Я не знаю никаких подробностей об этом процессе, но если jitted-тип проходит, то это считается проверяемым типом безопасности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top