Converter string.empty para nada/nulo
Pergunta
Existe uma função .NET que faz isso. Eu acho que se não houver, não tenho que fazer meu próprio método.
O problema é que tenho uma função. Aceita números inteiros. Se você passar por um número inteiro ou um valor nulo, ele ainda funciona. O problema é que o valor de uma caixa de texto vazio é um valor de string.Empty.
Eu não quero usar se's. Quero dizer, poderia, mas é muito melhor se eu puder chamar minha função assim
MyFunction (txtTextBox.text)
Mas não funcionará porque não pode converter a string.Empty em um número inteiro.
Solução
Eu acho que você precisa:
if(string.IsNullOrEmpty(value)) value = null;
ou
int MyFunction(string value) { if(string.IsNullOrEmpty(value)) return 0; int val = 0; int.TryParse(value, out val); return val; }
Outras dicas
Que tal, hum, aceitar um número inteiro em sua função que deve ler números inteiros e usar int.Parse
ou int.TryParse
na string de antemão?
Apenas de uma perspectiva diferente, presumo que sua caixa de texto também precisará permitir que apenas o numérico seja inserido. Caso contrário, apenas lidar com nulo não será à prova de balas contra alguém que entra não numérico. Deve haver alguns mascares, manipulador de eventos ou validação que você criou para ele. Que tal Criar seu próprio NumTextBox que herde da caixa de texto com os comportamentos de restrição de entrada que você já possuía e substitua a propriedade de texto ou crie um novo valor de chamadas de propriedade que cuida de todas as conversões e retorne o valor apropriado de forma consistente ao longo do seu sistema.
tente isso
Sub MyFunction(ByVal Param1Integer as Integer)
' Do Something
End Sub
Sub MyFunction(ByVal Param1String as String)
MyFunction(Val(Param1String))
End Sub
Ele assume que uma corda vazia é a mesma que 0.
Você já procurou usar um NumericUpdown (controle de spin)? Possui um membro .Value (sempre um número inteiro válido!) Em vez de ter que converter de uma string. Você pode limitar os valores superior e inferior, além de definir um padrão.
Eu usaria apenas uma instrução inline se (VB):
MyFunction(IIf(txtTextBox.Text Is Nothing, "", txtTextBox.Text))