检查字符串是否为空

时间:2013-12-09 07:03:45

标签: c# methods null conditional-statements

伙计我有一个方法论证。 我想在进一步指向程序的执行路径

之前检查它的null或空字符串

我的方法是

public void DisplayCalcQuery(string argFromQueryBuilder)
{
    if ((argFromQueryBuilder.Trim() != null) || (argFromQueryBuilder.Trim() != ""))
    {
        //notify closure of query builder
        _QueryBuilderIsOpen = false;
        UserBuiltQueries.Add(argFromQueryBuilder);
        //displayng the user built query(queries) on the stack panel meant to display it. 
        var lastItem = UserBuiltQueries[UserBuiltQueries.Count - 1];
        //removing all $signs from the obtained string
        lastItem = lastItem.Replace(@"$", "");
        addBuiltCheck(lastItem); 
    }
    else
    {
        //notify closure of query builder
        _QueryBuilderIsOpen = false;
    }
}

但是,即使字符串是"" 程序正在执行IF(我不想发生)。

4 个答案:

答案 0 :(得分:9)

使用 String.IsNullOrWhiteSpace ,如下所述

public void DisplayCalcQuery(string argFromQueryBuilder)
{
    if (!string.IsNullOrWhiteSpace(argFromQueryBuilder))
    {
        //notify closure of query builder
        _QueryBuilderIsOpen = false;
        UserBuiltQueries.Add(argFromQueryBuilder);
        //displayng the user built query(queries) on the stack panel meant to display it. 
        var lastItem = UserBuiltQueries[UserBuiltQueries.Count - 1];
        //removing all $signs from the obtained string
        lastItem = lastItem.Replace(@"$", "");
        addBuiltCheck(lastItem); 
    }
    else
    {
        //notify closure of query builder
        _QueryBuilderIsOpen = false;
    }
}

答案 1 :(得分:6)

使用String.IsNullOrEmpty精确设计用于检查值是空引用还是引用0长度字符串 - 尽管设计用于检查全空格串。 String.IsNullOrWhiteSpace将处理这个问题,但它只能从.NET 4向上提供。重要的是区分(在你的脑海中)一个字符串(一个长度为0)和一个全空格字符串 - 你的问题询问关于一个空字符串,但是你在检查空虚之前修剪了代码中的字符串,这表明你实际上只是想知道它是否是全空格。

Trim的结果永远不会成为空引用,尽管它可能是对空字符串的引用。那些是非常不同的东西。目前尚不清楚为什么你有一个||条款,因为Trim()永远不会返回两个对空字符串的引用一个空参考

此外,如果您真的对修剪后的值感兴趣,那么您应该在代码中始终如一地使用它 - 此时您可能需要分别检查nullity和检查空字符串:

if (arg == null)
{
    // Whatever
}
string trimmed = arg.Trim();
if (arg == "")
{
    // Whatever
}

或者你可以额外检查空格并仍在修剪:

if (string.IsNullOrWhiteSpace(arg))
{
    // Whatever - make sure you return in here,
    // to avoid calling Trim on a null reference
}
string trimmed = arg.Trim();
// Whatever

如果您使用的是.NET 4,则后者更清晰 - 性能差异不太可能显着。

最后,如果调用者的有效传入对空(或全空白)字符串的引用,但对它们传入空引用无效,请考虑处理这些情况单独:

if (arg == null)
{
    throw new ArgumentNullException("...");
}
string trimmed = arg.Trim();
if (arg == "")
{
    // Whatever
}

答案 2 :(得分:3)

如果您打算检查Whitespace,则需要使用String.IsNullOrWhiteSpace()方法

试试这个:

if(!String.IsNullOrWhiteSpace(argFromQueryBuilder))
{
  //do here

}

完整代码:

public void DisplayCalcQuery(string argFromQueryBuilder)
{
if (!String.IsNullOrWhiteSpace(argFromQueryBuilder))
{
    //notify closure of query builder
    _QueryBuilderIsOpen = false;
    UserBuiltQueries.Add(argFromQueryBuilder);
    //displayng the user built query(queries) on the stack panel meant to display it. 
    var lastItem = UserBuiltQueries[UserBuiltQueries.Count - 1];
    //removing all $signs from the obtained string
    lastItem = lastItem.Replace(@"$", "");
    addBuiltCheck(lastItem); 
}
else
{
    //notify closure of query builder
    _QueryBuilderIsOpen = false;
}

}

答案 3 :(得分:2)

我建议:

String.IsNullOrWhiteSpace()

因为它检查字符串为空,为空或仅包含空格。

虽然String.IsNullOrEmpty不会检查空格。