【问题标题】:Is string check returns false字符串检查是否返回 false
【发布时间】:2013-10-17 23:40:05
【问题描述】:

以下代码:

protected bool IsStringAndNotNullAndEmpty(object value)
{
    var s = value as string;
    if (s != null)
    {
        return string.IsNullOrEmpty(s);
    }

    return false;
}

有以下object通过:

"Relatively long option for testing"

这应该是一个string,但它不是第二个return 语句。

任何想法为什么它可能会这样做?老实说,我很难过。

【问题讨论】:

  • 你的字符串不是空的,也不是空的,所以它返回假。请在提问前调试。 if中的否定返回
  • 为什么要检查null?这就是string.IsNullOrEmpty 所做的!
  • 你的程序来到了 string.IsNullOrEmpty(s) 但是因为 s in not null 这个方法返回 false...
  • 如果你想让你的方法在不为空的时候返回true,你为什么要调用你的方法“是字符串并且它不为空并且为空”?我认为您需要重新考虑您的方法需要做什么并编写执行此操作的代码。

标签: c# string validation object


【解决方案1】:

要满足您的方法名称,您需要这个:

protected bool IsStringAndNotNullAndEmpty(object value)
{
    var s = value as string;
    return s == string.Empty;
}

将其名称更改为 IsEmptyString(object value) 会更清晰。

看来 OP 实际上想要一个为非空字符串返回 true 的方法。所以需要的是:

protected bool IsNonEmptyString(object value)
{
    var s = value as string;
    return !string.IsNullOrEmpty(s);
}

请注意方法名称,让它们说出代码的实际作用...

【讨论】:

    【解决方案2】:

    您需要否定 IsNullOrEmpty 否则两者都将返回 false。

    return !string.IsNullOrEmpty(s);

    那是您的方法称为 NotNullAndEmpty 但您只是返回 IsNullOrEmtpy!

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2022-09-27
      • 2022-11-13
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2023-03-31
      相关资源
      最近更新 更多