如何检查数据类型

Aar*_*ana 1 c# textbox

我在动态创建的网格视图中有一个文本框.我们可以作为文本访问用户输入,但是如何检查文本是整数类型还是字符串类型?

if (tx.Text == "")
{
    tx.Text = Convert.ToString(0);
}
if (Convert.ToInt32(tx.Text) > max)
{
    MessageBox.Show("Some Message", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
    tx.Text = Convert.ToString(max);
}
Run Code Online (Sandbox Code Playgroud)

tx是我们通过其访问用户输入的文本框tx.Text.
如何检查输入参数的类型是否为整数?

Cod*_*ray 7

你正在寻找这种TryParse方法.这将告诉您是否可以将给定的字符串值转换为数字.它可以做到这一切而不会抛出任何异常.

示例代码:

  int number;
  bool result = Int32.TryParse(tx.Text, out number);
  if (result)
  {
      // Conversion to a number was successful.
      // The number variable contains your value.        
  }
  else
  {
     // Conversion to a number failed.
     // The value entered in the textbox is not numeric.
  }
Run Code Online (Sandbox Code Playgroud)

但是,如果您希望限制文本框的输入范围(即,阻止用户输入除数字之外的任何内容),这不是正确的方法.

相反,您应该使用不同的控件,例如NumericUpDown控件MaskedTextBox控件.这些允许您防止用户首先输入无效输入,这比事后显示错误更加用户友好.


回应你的评论:

在java中你有instanceof关键字来检查对象类型.例如: - Obj instanceof Integer ...如何在C#中检查对象类型

C#有typeof关键字,但这不会对你有所帮助.问题是,您正在检查的对象类型的实例String.该类的Text属性始终返回一个类型的对象.这不是VB 6:这里没有.您要检查的是该值是否可以转换为等效的积分表示.TextBoxStringVariantsString