string.empty和string.isnullorempty

时间:2010-11-30 10:58:26

标签: c# visual-studio winforms

我有一个这样的函数,用于检查字段是否为空或者是否为空,然后在文本框旁边显示setError图标。

      private bool ValidateHost()
      {
        ErrorProvider errorProvider = new ErrorProvider();
        bool isValid = true;

        //If the txtHost is empty, show a message to user            
        if(txtHost.Text == string.Empty)
            {
            errorProvider.SetError(txtHost, "Please enter the host address");
            isValid = false;
            }
        else
            errorProvider.SetError(txtHost, string.Empty);
        return isValid;
      }

但是当我尝试使用字符串时,isnullorempty然后我没有得到seterror图标.. 你们能告诉我在这种情况下使用string.isnullorempty的正确方法是什么..

4 个答案:

答案 0 :(得分:7)

我的猜测是你尝试使用它,好像它是一个实例方法,如下所示:

if (txtHost.Text.IsNullOrEmpty())

这不是一个实例方法 - 它是一个静态方法,因此您可以像这样使用它:

if (string.IsNullOrEmpty(txtHost.Text))

这不是一个实例方法,否则如果txtHost.Text为null,方法调用将抛出NullReferenceException,这正是我们试图避免的。

可以编写一个可以处理null的扩展方法,但据我所知,框架中没有一个。

答案 1 :(得分:5)

string.IsNullorEmpty()是一个静态方法,调用如下:

if (string.IsNullOrEmpty(txtHost.Text))
{
    errorProvider.SetError(txtHost, "Please enter the host address"); 
    isValid = false;
}

如果空格,制表符等也无效,您也可以考虑类似的string.IsNullOrWhitespace

答案 2 :(得分:0)

将您的IF条件更改为 -

if( string.IsNullOrEmpty(txtHost.Text) ) 
{
  ...
}

答案 3 :(得分:0)

这可不是他的字符串测试吗?

  

ErrorProvider errorProvider = new   ErrorProvider控件();

哼。认真。 ErrorProvider应该存在于表单上。你只是在飞行中创建一个(在方法结束时变为无效),甚至没有在表单中正确地挂起它们。

应将ErrorProvider放在表单上。

相关问题