Converti String.Empty in Nothing/Null
Domanda
Esiste una funzione .Net che lo fa.Immagino che se non c'è devo creare il mio metodo.
Il fatto è che ho una funzione.Accetta numeri interi.Se passi un numero intero 0 o un valore nullo, funziona comunque.Il problema è che il valore di una casella di testo vuota è un valore String.Empty.
Non voglio usare if's.Voglio dire, potrebbe, ma è molto più bello se posso semplicemente chiamare la mia funzione in questo modo
MiaFunzione(txtCasella di testo.Testo)
Ma non funzionerà perché non può convertire string.empty in un numero intero.
Soluzione
Immagino che tu abbia bisogno di:
if(string.IsNullOrEmpty(value)) value = null;
O
int MyFunction(string value) { if(string.IsNullOrEmpty(value)) return 0; int val = 0; int.TryParse(value, out val); return val; }
Altri suggerimenti
Che ne dici di accettare un numero intero nella tua funzione che dovrebbe leggere numeri interi e utilizzare int.Parse
O int.TryParse
sulla corda in anticipo?
Solo da una prospettiva diversa, presumo che anche la tua casella di testo dovrà consentire l'inserimento solo di numeri.Altrimenti la semplice gestione di null non sarà a prova di proiettile contro qualcuno che inserisce valori non numerici.Devono esserci alcuni mascheramenti, gestori di eventi o convalide che hai creato per questo.Che ne dici di creare il tuo NumTextBox che eredita da TextBox con i comportamenti di restrizione di input che hai già e sovrascrive la proprietà Text o crea una nuova proprietà chiama Value che si occupa di tutte le conversioni e restituisce il valore appropriato in modo coerente in tutto il sistema.
prova questo
Sub MyFunction(ByVal Param1Integer as Integer)
' Do Something
End Sub
Sub MyFunction(ByVal Param1String as String)
MyFunction(Val(Param1String))
End Sub
Si presuppone che una stringa vuota sia uguale a 0.
Hai esaminato l'utilizzo di a NumericoSuGiù (controllo della rotazione)?Ha un membro .Value (sempre un numero intero valido!) invece di dover convertire da una stringa.È possibile limitare i valori superiore e inferiore, nonché impostare un valore predefinito.
Vorrei semplicemente utilizzare un'istruzione IF in linea (VB):
MyFunction(IIf(txtTextBox.Text Is Nothing, "", txtTextBox.Text))