Конвертировать String.Empty в Nothing / Null - PullRequest
3 голосов
/ 23 февраля 2010

Есть ли функция .Net, которая делает это. Я думаю, если нет, я должен сделать свой собственный метод.

Дело в том, что у меня есть функция. Он принимает целые числа. Если вы передаете 0 целое или нулевое значение, оно все равно работает. Проблема заключается в том, что значением пустого текстового поля является значение String.Empty.

Я не хочу использовать, если это. Я имею в виду, что это могло бы быть намного лучше, если бы я мог просто вызвать свою функцию следующим образом

MyFunction (txtTextbox.Text)

Но это не сработает, потому что не может преобразовать string.empty в целое число.

Ответы [ 6 ]

4 голосов
/ 23 февраля 2010

Я думаю, вам нужно:

if(string.IsNullOrEmpty(value)) value = null;

или

int MyFunction(string value)
 {
      if(string.IsNullOrEmpty(value)) return 0;

      int val = 0;
      int.TryParse(value, out val);
      return val;
 }
3 голосов
/ 23 февраля 2010

Как насчет того, чтобы принять в вашей функции целое число, которое должно читать целые числа, и заранее использовать int.Parse или int.TryParse в строке?

0 голосов
/ 04 ноября 2011

Я бы просто использовал встроенный оператор IF (VB):

MyFunction(IIf(txtTextBox.Text Is Nothing, "", txtTextBox.Text))
0 голосов
/ 23 февраля 2010

Вы рассматривали возможность использования NumericUpDown (управление вращением)? У него есть член .Value (всегда допустимое целое число!) Вместо необходимости преобразования из строки. Вы можете ограничить верхнее и нижнее значения, а также установить значение по умолчанию.

0 голосов
/ 23 февраля 2010

попробуйте

   Sub MyFunction(ByVal Param1Integer as Integer)
     ' Do Something
   End Sub

   Sub MyFunction(ByVal Param1String as String)
     MyFunction(Val(Param1String))
   End Sub

Предполагается, что пустая строка совпадает с 0.

0 голосов
/ 23 февраля 2010

С другой стороны, я предполагаю, что ваше текстовое поле также должно позволять вводить только цифры. В противном случае простое обращение с нулем не будет пуленепробиваемым, если кто-то введет не числовое значение. Там должны быть какие-то маскировки, обработчик событий или проверка, которую вы создали для него. Как насчет создания собственного NumTextBox, который наследуется от TextBox с уже введенными вами ограничениями ввода, и либо переопределяет свойство Text, либо создает новое свойство, которое вызывает Value, которое просматривает все преобразования и последовательно возвращает соответствующее значение по всей вашей системе.

...