-6

以下代码:

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"

这应该很高兴是 a string,但它不是第二个return语句。

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

4

2 回答 2

2

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

return !string.IsNullOrEmpty(s);

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

于 2013-10-10T09:29:07.407 回答
2

为了满足您的方法名称,您需要:

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);
}

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

于 2013-10-10T09:37:06.783 回答