Операции <, >, <=, >=, =, <>, Is и As называются операциями сравнения и приведения типов.
relational-expression < additive-expression
relational-expression > additive-expression
relational-expression <= additive-expression
relational-expression >= additive-expression
relational-expression Is type
relational-expression As type
equality-expression:
relational-expression
equality-expression == relational-expression
equality-expression <> relational-expression
Операция Is используется для проверки действительного типа объекта во время выполнения программы на совместимость с данным типом. Результатом операции E Is T, где E – это выражение, а T – это тип, является логическое значение показывающее может ли выражение E успешно быть преобразовано к типу T путем ссылочного преобразования, распаковки или упаковки. Операция выполняется следующим образом:
Если тип E времени компиляции совпадает с T, либо существует неявное ссылочное преобразование или преобразование упаковки от типа E времени компиляции к T:
Если E имеет ссылочный тип, то результат эквивалентен сравнению E <> Null.
Если E имеет размерный тип, то результатом операции будет True.
В противном случае если существует явное ссылочное преобразование или преобразование распаковки от типа E времени компиляции к T, то производится динамическая проверка типа:
Если значение E равно Null, то результатом операции будет False.
В противном случае будем считать R действительном типом экземпляра на который ссылается E. Если R и T являются одним типом, либо R является ссылочным типом и существует неявное ссылочное преобразование от R к T, либо R является размерным типом, а T интерфейсом, который реализуется R, то результатом операции будет True.
В противном случае результатом операции будет False.
В противном случае не существует ссылочного преобразования или преобразования упаковки от E к Т и результатом операции будет False.
Операция As используется для явного преобразования значения к данному типу. В операции вида E As T, E должно быть выражением, а T типом. Тип результата всегда T и классифицируется как значение. Операция выполняется успешно если существует явное преобразование от действительного типа E времени выполнения к типу T. В противном случае возбуждается исключительная ситуация типа System.InvalidCastException.
См.также: