-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"

これは喜んで である必要がありますが、そうではなく、2 番目のステートメントstringに進みます。return

なぜこれを行っているのでしょうか?正直に言うと困惑しています。

4

2 に答える 2

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 に答える
2

IsNullOrEmpty を否定する必要があります。そうしないと、両方とも false が返されます。

return !string.IsNullOrEmpty(s);

つまり、メソッドは NotNullAndEmpty と呼ばれますが、IsNullOrEmtpy を返すだけです。

于 2013-10-10T09:29:07.407 に答える