Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ограничивает неявные преобразования типов данных только расширяющимися преобразованиями, запрещают позднюю привязку и запрещают неявную типизацию, которая приводит к типу Object
.
Синтаксис
Option Strict { On | Off }
Комплектующие
Срок | Определение |
---|---|
On |
Необязательно.
Option Strict Включает проверку. |
Off |
Необязательно. Отключает Option Strict проверку. |
Замечания
При Option Strict On
появлении или Option Strict
отображении в файле следующие условия вызывают ошибку во время компиляции:
Неявные сужающие преобразования
Поздняя привязка
Неявное ввод, которое приводит к типу
Object
Замечание
В конфигурациях предупреждений, которые можно задать на странице компиляции, конструктор проектов (Visual Basic), есть три параметра, которые соответствуют трем условиям, которые вызывают ошибку во время компиляции. Сведения об использовании этих параметров см. в разделе "Настройка конфигураций предупреждений" в интегрированной среде разработки далее в этом разделе.
Инструкция Option Strict Off
отключает проверку ошибок и предупреждений для всех трех условий, даже если связанные параметры интегрированной среды разработки указывают для включения этих ошибок или предупреждений. Инструкция Option Strict On
включает проверку ошибок и предупреждений для всех трех условий, даже если связанные параметры интегрированной среды разработки указывают для отключения этих ошибок или предупреждений.
Если используется, Option Strict
инструкция должна отображаться перед любыми другими операторами кода в файле.
Если задано значение Option Strict
On
, Visual Basic проверяет, указаны ли типы данных для всех элементов программирования. Типы данных можно указать явно или указать с помощью определения локального типа. Указание типов данных для всех элементов программирования рекомендуется по следующим причинам:
Она обеспечивает поддержку IntelliSense для переменных и параметров. Это позволяет просматривать их свойства и другие члены при вводе кода.
Он позволяет компилятору выполнять проверку типов. Проверка типов помогает найти инструкции, которые могут завершиться ошибкой во время выполнения из-за ошибок преобразования типов. Он также определяет вызовы методов для объектов, которые не поддерживают эти методы.
Это ускоряет выполнение кода. Одна из причин заключается в том, что если не указать тип данных для элемента программирования, компилятор Visual Basic назначает его
Object
тип. Скомпилированный код может потребоваться преобразовать обратно и вперед междуObject
другими типами данных, что снижает производительность.
Неявные ошибки сужения преобразования
Неявное сужение ошибок преобразования возникает при наличии неявного преобразования типа данных, которое является сужающим преобразованием.
Visual Basic может преобразовать многие типы данных в другие типы данных. Потеря данных может возникать, когда значение одного типа данных преобразуется в тип данных с меньшей точностью или меньшей емкостью. Ошибка во время выполнения возникает, если такое сужение преобразования завершается ошибкой.
Option Strict
обеспечивает уведомление во время компиляции этих сужающих преобразований, чтобы избежать их. Дополнительные сведения см. в разделе "Неявные и явные преобразования" и "Расширение" и "Сужение".
Преобразования, которые могут привести к ошибкам, включают неявные преобразования, происходящие в выражениях. Дополнительные сведения см. в следующих разделах:
При объединениях строк с помощью оператора используйте оператор, все преобразования в строки считаются расширенными. Поэтому эти преобразования не создают неявную сужающую ошибку преобразования, даже если Option Strict
она включена.
При вызове метода с аргументом, который имеет тип данных, отличный от соответствующего параметра, сужающее преобразование вызывает ошибку во время компиляции, если Option Strict
она включена. Можно избежать ошибки во время компиляции с помощью расширения преобразования или явного преобразования.
Неявные ошибки сужения преобразования подавляются во время компиляции для преобразования элементов в For Each…Next
коллекцию в переменную элемента управления циклом. Это происходит даже в том случае, если Option Strict
он включен. Дополнительные сведения см. в разделе "Узкие преобразования" в разделе "Для каждого... Следующая инструкция.
Ошибки последней привязки
Объект поздно привязан, если он назначается свойству или методу переменной, объявленной типом Object
. Дополнительные сведения см. в разделе "Ранняя и поздняя привязка".
Ошибки типа неявного объекта
Ошибки типа неявного объекта возникают, если соответствующий тип не может быть выведен для объявленной переменной, поэтому Object
выводятся типы. Это происходит в первую очередь при использовании Dim
инструкции для объявления переменной без использования As
предложения и Option Infer
выключения. Дополнительные сведения см. в инструкции "Вывод параметров " и спецификации языка Visual Basic.
Для параметров метода предложение является необязательным, As
если Option Strict
он отключен. Однако если любой As
параметр использует предложение, все они должны использовать его. Если Option Strict
этот параметр включен, As
для каждого определения параметра требуется предложение.
Если вы объявляете переменную без использования предложения и задаете для нее As
значение Nothing
, переменная имеет тип Object
. В этом случае ошибка времени компиляции не возникает, когда Option Strict
включена и Option Infer
включена. Примером этого является Dim something = Nothing
.
Типы и значения данных по умолчанию
В следующей таблице описываются результаты различных сочетаний указания типа данных и инициализатора в инструкции Dim.
Указанный тип данных? | Инициализатор указан? | Пример | Результат |
---|---|---|---|
нет | нет | Dim qty |
Если Option Strict значение отключено (по умолчанию), переменная имеет значение Nothing .Если Option Strict он включен, возникает ошибка во время компиляции. |
нет | Да | Dim qty = 5 |
Если Option Infer он включен (по умолчанию), переменная принимает тип данных инициализатора. См. вывод локальных типов.При Option Infer отключении и Option Strict отключении переменная принимает тип Object данных.Если Option Infer он отключен и Option Strict включен, возникает ошибка во время компиляции. |
Да | нет | Dim qty As Integer |
Переменная инициализирована в значение по умолчанию для типа данных. Дополнительные сведения см. в инструкции Dim. |
Да | Да | Dim qty As Integer = 5 |
Если тип данных инициализатора не преобразуется в указанный тип данных, возникает ошибка во время компиляции. |
Если оператор Option Strict не присутствует
Если исходный код не содержит инструкцию, используется строгийOption Strict
параметр Option на странице компиляции, конструктор проектов (Visual Basic).
Страница компиляции имеет параметры, обеспечивающие дополнительный контроль над условиями, которые создают ошибку.
Если вы используете компилятор командной строки, можно использовать параметр компилятора -optionstrict для указания параметра Option Strict
.
Установка параметра Strict в интегрированной среде разработки
Замечание
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
В обозревателе решенийвыберите проект. В меню Проект выберите пункт Свойства.
На вкладке "Компиляция " задайте значение в поле Option Strict .
Настройка конфигураций предупреждений в интегрированной среде разработки
При использовании страницы компиляции конструктор проектов (Visual Basic) вместо Option Strict
инструкции у вас есть дополнительный контроль над условиями, которые создают ошибки. В разделе "Конфигурации предупреждений" страницы компиляции имеются параметры, соответствующие трем условиям, которые вызывают ошибку во время компиляции.Option Strict
Ниже приведены следующие параметры:
Неявное преобразование
Поздняя привязка; Вызов может завершиться ошибкой во время выполнения
Неявный тип; предполагается, что объект
При задании параметра "Строго включено" все три из этих параметров конфигурации предупреждений имеют значение Error. При установке параметра "Строгоотключено", для всех трех параметров задано значение None.
Вы можете изменить каждый параметр конфигурации предупреждения на "Нет", " Предупреждение" или "Ошибка". Если для всех трех параметров конфигурации предупреждения задано значение Error, On
появится в Option strict
поле. Если для всех трех задано значение None, Off
появится в этом поле. Для любого другого сочетания этих параметров отображается (настраиваемое).
Задание параметра Option Strict по умолчанию для новых проектов
При создании проекта параметр "Строгий " на вкладке "Компиляция " задан параметр " Строгий " в диалоговом окне "Параметры ".
Чтобы задать Option Strict
в этом диалоговом окне, в меню "Сервис " нажмите кнопку "Параметры". В диалоговом окне "Параметры" разверните узел "Проекты и решения", а затем щелкните "По умолчанию" VB. Начальным параметром по умолчанию в VB Defaults является Off
.
Установка параметра Strict в командной строке
Включите параметр компилятора -optionstrict в команду vbc .
Пример 1
В следующих примерах показаны ошибки во время компиляции, вызванные неявными преобразованиями типов, которые сужают преобразования. Эта категория ошибок соответствует условию неявного преобразования на странице компиляции.
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10
Пример 2
В следующем примере показана ошибка во время компиляции, вызванная поздней привязкой. Эта категория ошибок соответствует последней привязке; вызов может завершиться сбоем во время выполнения на странице компиляции.
' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5
Пример 3
В следующих примерах показаны ошибки, вызванные переменными, объявленными с неявным типом Object
. Эта категория ошибок соответствует неявным типу; предполагается условие объекта на странице компиляции.
' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause
' causes a compile-time error.
Dim cardReaders = 5
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)
End Sub
См. также
- Расширение и сужение конверсий
- Неявные и явные преобразования
- страница компиляции конструктор проектов (Visual Basic)
- Инструкция Option Explicit
- Функции преобразования типов
- Практическое руководство. Доступ к членам объекта
- Встроенные выражения в XML
- Упрощенное преобразование делегатов
- Поздняя привязка в решениях Office
- -optionstrict
- Диалоговое окно "Стандартные", "Проекты", "Параметры"