繁体   English   中英

IF 语句检查 null 或 String.Empty

[英]IF statement checking for null or String.Empty

所以我有一个列表,其中包含一些数据,例如输入路径、output 路径以及列标题。 可以看出有六个列标题,但有些可能是 null,因为它们不必使用。 因此,我创建了一种过滤数据的方法,以便只保留有用的数据。

List<string> data = new List<string> { "C:/", "C:/Documents", "Hello", Goodbye". null, null, null, null } // Data to be passed into method
List<string> filteredData = new List<string>();

public void FilterData(List<string> data)
{
   foreach (var d in data)
   {
      if (d != null || d != String.Empty)
      {
         filteredData.Add(d);
      }
   }
}

为什么当我将 List data传递给此方法时,没有任何数据被过滤,因此filteredData将包含与data相同的内容,但是当我使用以下内容时(如果语句仅评估非空),它会正确过滤?

public void FilterData(List<string> data)
    {
       foreach (var d in data)
       {
          if (d != null)
          {
             filteredData.Add(d);
          }
       }
    }

谢谢

你:

if (d != null || d != String.Empty)

这总是正确的,因为d不能同时是null"" 它必须与其中至少一个不同。

一些正确的选择:

if (d != null && d != "")
if (!(d == null || d == ""))
if (!string.IsNullOrEmpty(d))

问题是当您应该使用逻辑 AND 时,您使用的是逻辑 OR。

您只想在它不是 null 且不为空时添加它。

顺便说一句:有一种更简单的方法:

foreach (var d in data)
{
      if (!String.IsNullOrEmpty(d))
      {
          ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM