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.

Foi útil?

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))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top