用C#字符串处理null包含在循环中



我有要获取的数据

NullReferenceException : Object reference not set to an instance of an object

我知道这与故意在列表中创建null的尝试有关。我正在使用linqpad来尝试和模仿我的代码

List<string> list = new List<string>();
list.Add(null);
list.Add("scorp\jack");
list.Add("you");
var x = "jack";
var admin = 0;
foreach (var y in list) // Loop through List with foreach.
{
    //Console.WriteLine(prime);
    if(y.Contains(x))
    {
        admin = 1;
    }

}
Console.WriteLine(admin);

一旦它在上运行

 if(y.Contains(x)) 

那么它就无法处理null,我想知道处理它的优雅方式是什么?

List<string> list = new List<string>();
list.Add(null);
list.Add("scorp\jack");
list.Add("you");
var x = "jack";
var admin = 0;
// Add the Where extension method to filter out null values.
foreach (var y in list.Where(xx => xx != null)) // Loop through List with foreach.
{
    //Console.WriteLine(prime);
    if(y.Contains(x))
    {
        admin = 1;
    }

}
Console.WriteLine(admin);

相反,您可以不使用循环,将if更改为:

    if(y != null && y.Contains(x))

您必须将null条件添加到if语句中:

if( y != null && y.Contains(x) )  {
  // ...
}

最新更新