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.

È stato utile?

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))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top