如何识别空刺

时间:2017-05-29 07:10:44

标签: c#

我有一个包含空值的字符串TempDayValues[j],但以下两个示例无法识别null

string Temp = TempDayValues[j].Trim();
if (string.IsNullOrEmpty(Temp))
{
     Console.WriteLine("Found Null");
     TempDayValues[j] = TempDayValues[j - 1];
}

If(Temp == null)
{
   //code here
}

有没有更好的方法来识别null值?

2 个答案:

答案 0 :(得分:3)

null比较是检查它的方法。但是,在您的代码中,如果您在调用NullReferenceException时尚未获得Trim,那么您的字符串不为空。

您可能正在寻找IsNullOrWhiteSpace

if (string.IsNullOrWhiteSpace(TempDayValues[j]))
{
     Console.WriteLine("Found Null");
     TempDayValues[j] = TempDayValues[j - 1];
}

如果您首先要检查它是否为null并且有一个行为,如果它是空/空格,则会有不同的行为:

if(TempDayValues[j] == null)
{
    // code
}
else if(TempDayValues[j].Trim() == string.Empty)
{
    // code 
}

答案 1 :(得分:0)

您的问题虽然有效,却缺少对您尝试完成的内容的解释。因为您只询问过空检查;我的回答只关注在您的代码片段中执行的空检查。

有一些关于您的代码的评论我认为可以帮助您更好地了解您的情况。

String Temp = TempDayValues[j].Trim();

有趣的是,您已经在字符串上调用了.Trim()。如果TempDayValues[j]为null,则会抛出异常。您无法在空值上调用方法(您也无法访问空值的属性和字段)。

如果您的申请没有抛出异常;我认为这不是你没有提到的;那么你已经隐含地已经证实了#34;你的字符串不是null。因为否则你会得到一个例外。

另请注意,.Trim()永远不会使某些内容为空。因为您只想检查TempDayValues[j]是否为空(并且可能覆盖该值,但从不使用值);在使用.Trim()进行空检查时,功能上无关紧要。

让我们假设其余的解释是你的字符串可能为空;即使.Trim()使你的例子无法实现。

if (string.IsNullOrEmpty(Temp))
{
     Console.WriteLine("Found Null");
     TempDayValues[j] = TempDayValues[j - 1];
}

如果你的字符串为空,,如果它是空的,你的if块将被执行。毕竟,你是调用方法string.IsNull OrEmpty ()。空字符串是一个非空的字符串,但也不包含任何字符。

因此,更正确的消息是"找到null或空字符串"。

if(Temp == null)
{
   //code here
}

虽然这是检查null的有效方法;如果你的字符串为空,if块将不会执行。这可能就是你要找的东西。在大多数情况下,我希望String.IsNullOrEmpty()更适合;但我不知道你的代码的具体目的。

在这里,说你"发现null"是正确的。而不是一个空字符串。

有人说;这个问题的答案是什么?

这不容易回答;因为你没有解释代码片段的用意。我将提供代码改进,它是我能给你的最好的信息。

string Temp = TempDayValues[j];
if (string.IsNullOrEmpty(Temp)) //use Temp == null here if you don't want it to trigger on empty strings.
{
     Console.WriteLine("Found Null or empty string");
     TempDayValues[j] = TempDayValues[j - 1];
}

编辑如果你的字符串不为空,不是空的情况下你还需要这个if if块,但它只包含空格;然后调用.Trim()是相关的。在这种情况下,将if块更改为:

if (string.IsNullOrEmpty(Temp) || string.IsNullOrEmpty(Temp.Trim()))

如果Temp为null,则只执行左操作数(因为无论右操作数如何,它都会使评估结果true。)
只有当您的字符串不是空或空时,才会执行右操作数。在这种情况下,它允许您检查仅包含空格字符的字符串。