Domanda

Recentemente ho posto una domanda su IIf vs.Se e ho scoperto che esiste un'altra funzione in VB chiamata Se che fondamentalmente fa la stessa cosa di Se ma è un cortocircuito.

Fa questo Se la funzione funziona meglio di quella Se funzione?Il Se l'affermazione prevale su Se E Se funzioni?

È stato utile?

Soluzione

Accidenti, pensavo davvero che stessi parlando dell'operatore fin dall'inizio.;-) Comunque …

Questa funzione If funziona meglio della funzione IIf?

Decisamente.Ricorda, è integrato nella lingua.È necessario valutare solo uno dei due argomenti condizionali, risparmiando potenzialmente un'operazione costosa.

L'istruzione If prevale sulle funzioni If e IIf?

Penso che non si possano paragonare i due perché fanno cose diverse.Se il tuo codice esegue semanticamente un compito, dovresti enfatizzare questo, invece del processo decisionale.Usa il If operatore qui invece dell'istruzione.Ciò è particolarmente vero se puoi usarlo nell'inizializzazione di una variabile perché altrimenti la variabile verrà inizializzata per impostazione predefinita, risultando in un codice più lento:

Dim result = If(a > 0, Math.Sqrt(a), -1.0)

' versus

Dim result As Double ' Redundant default initialization!
If a > 0 Then
    result = Math.Sqrt(a)
Else
    result = -1
End If

Altri suggerimenti

Una distinzione molto importante tra IIf() E If() è quello con Option Infer On quest'ultimo trasmetterà implicitamente i risultati allo stesso tipo di dati in alcuni casi, come where IIf sarà di ritorno Object.

Esempio:

    Dim val As Integer = -1
    Dim iifVal As Object, ifVal As Object
    iifVal = IIf(val >= 0, val, Nothing)
    ifVal = If(val >= 0, val, Nothing)

Produzione:
iifVal ha valore Niente e tipo Oggetto
ifVal ha valore 0 e tipo Integer, b/c sta implicitamente convertendo Nothing in un Integer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top