伙计我有一个方法论证。 我想在进一步指向程序的执行路径
之前检查它的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(我不想发生)。
答案 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
不会检查空格。