2013-03-13 10 views
17

c'è un modo per usare la stenografia per fare qualcosa del genere?vb.net se stenografia

If Not txtBookTitle.Text = String.Empty Then 
    objBook.DisplayName = txtBookTitle.Text 
End If 
+1

http://stackoverflow.com/questions/28377/iif-vs-if – djv

risposta

24
objBook.DisplayName = If(Not (txtBookTitle.Text = String.Empty), txtBookTitle.Text, objBook.DisplayName) 
+6

Questo è [1 carattere più lungo dell'originale] (http://www.lettercount.com/), inclusi gli spazi. :) – Neolisk

+2

non dare la colpa a me, incolpare VB per non implementare un operatore ternario corretto: P –

+1

Forse mi manca qualcosa, ma l'operatore <> non lavora sulle stringhe? Perché l'uso di Not? –

6

ci sono due versioni del if stenografia. O Se (espressione, parte vera, falsa parte) o se (espressione, falsa parte)

objBook.DisplayName = If(String.IsNullOrEmpty(txtBookTitle.Text), txtBookTitle.Text) 
4

seguito il codice è simile al vostro tre linee di codice:

objBook.DisplayName = IIF(String.IsNullorEmpty(txtBookTitle.Text),objBook.DisplayName, txtBookTitle.Text) 
+2

non consiglio l'uso di IIF. * Entrambi i parametri saranno valutati * e possono produrre risultati imprevisti, ad esempio * se si usano le funzioni. * Considera questo 'IIF (TRUE, JustPrintOK(), ImplodeTheUniverse())' ... siamo condannati dal momento che entrambe le funzioni saranno eseguite indipendentemente dalla condizione. Per VB> = 9 basta usare 'IF' proprio come il tuo esempio, funzionerà senza questo problema. – Sharky

+0

Esattamente, si dovrebbe usare 'If' e' AndAlso'/'OrElse' invece – specializt

4

Questa è la versione più corta (81 carattere):

If txtBookTitle.Text <> String.Empty Then objBook.DisplayName = txtBookTitle.Text 

e preferirei questo per il debug-abilità. Anche facilmente convertibile in C#.

+3

Penso che sia anche più chiaro di ... If Not txtBookTitle.Text = String.Empty –