Поделиться через


Не удается определить общий тип для первого и второго операндов бинарного оператора If

Обновлен: Ноябрь 2007

Сообщение об ошибке

Не удается определить общий тип для первого и второго операнда бинарного оператора "If". Один должен иметь расширяющее преобразование к другому.
Cannot infer a common type for the first and second operands of the binary 'If' operator. One must have a widening conversion to the other.

Бинарный оператор If требует, чтобы существовало расширяющее преобразование между одним из аргументов и другим аргументом. Например, из-за отсутствия расширяющего преобразования в любом направлении между Integer и String, следующий код вызывает эту ошибку.

Dim first? As Integer
Dim second As String = "First is Nothing"
'' Not valid.
' Console.WriteLine(If(first, second))

Идентификатор ошибки: BC33110

Исправление этой ошибки

  • Обеспечьте явное преобразование одного из операндов, если это возможно в коде:

    Console.WriteLine(If(first, CInt(second))) 
    
  • Перепишите код с помощью различных условных конструкций.

    If first IsNot Nothing Then
        Console.WriteLine(first)
    Else
        Console.WriteLine(second)
    End If
    

См. также

Основные понятия

Расширяющие и сужающие преобразования

Ссылки

Оператор If

Оператор If...Then...Else (Visual Basic)