Impossibile dedurre un tipo comune per il primo e il secondo operando dell'operatore 'If' binario

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile dedurre un tipo comune per il primo e il secondo operando dell'operatore 'If' binario. Uno deve avere una conversione verso un tipo di dati più grande all'altro.
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.

L'operatore If binario richiede che vi sia una conversione verso un tipo di dati più grande tra uno degli argomenti e l'altro argomento. Ad esempio, poiché non vi è una conversione verso un tipo di dati più grande in entrambe le direzioni tra Integer e String, il codice seguente causa questo errore.

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

ID errore: BC33110

Per correggere l'errore

  • Fornire una conversione esplicita per uno degli operandi, se ciò è possibile nel codice:

    Console.WriteLine(If(first, CInt(second))) 
    
  • Riscrivere il codice utilizzando una costruzione condizionale diversa.

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

Vedere anche

Concetti

Conversioni di ampliamento e restrizione

Riferimenti

Operatore If

Istruzione If...Then...Else (Visual Basic)