foreach循环中的空异常处理

问题描述 投票:-1回答:7

我的列表X带有一些字符串和null值。我正在迭代foreach循环,将值绑定到文本框。如果我在列表X中得到任何空值,则foreach循环将终止,并得到空异常如何处理。

我正在检查每个循环中的条件。但我认为它在逻辑上不正确。

SPList _listObj = web.Lists[new Guid(listID)];
            SPListItem item = _listObj.GetItemById(Convert.ToInt32(itemID));
           foreach (SPField field in _listObj.Fields)
            {
                if (field.Title != Null)
                {  //do some code}}
c# exception-handling null foreach
7个回答
4
投票

尝试下面的代码:

foreach(var x in Lists.Where(x => x.fiels != null))
{

}

0
投票

该代码对我来说似乎非常可疑。

首先,您真的有一个列表清单吗?如果是这样,我想您也必须遍历内部列表中的每个元素:

foreach(List list in Lists)
{
    foreach (var x in list)
    {
        if (x.fields != null)
            // blah
        else
            // blah
    }
}

第二,您确定Lists变量不包含任何空值吗?可能实际上是x为空,这是Null参考异常的原因:

foreach(List x in Lists)
{
    if (x != null && x.fields != null)
        // blah
    else
        // blah
}

0
投票

提供的代码不正确。我想您想在foreach循环中检查X是否为Null。如果这在逻辑上是正确的或不正确的,那么只有您可以知道,因为逻辑超出了提供的代码,并取决于您实际使用的位置。

我个人认为在foreach循环中检查null没有什么不好。

例如,您还可以使用Linq首先查询Null值,然后查询Non Null值。设计选择的问题。

问候


0
投票

在列表中列出x?您可能打算这样做:

foreach(string x in listvar){
    if(x != null)
       // do something
}

而且这些字符串实际上是空还是空?有所不同。

foreach(string x in listvar){
    if(x != "")
       // do something
}

我怀疑问题出在foreach循环的错误实现中,由于循环内的对象不存在,导致弹出空错误。


0
投票

为什么不将其与null-coalescing运算符一起使用呢?>

   foreach (var item in feeList ?? new List<FeeBusiness>())
   {
           // your code
   }

?运算符称为空值运算符。如果操作数不为null,则返回左侧的操作数;否则,返回左侧的操作数。否则返回右手操作数。


0
投票
string delimitedvalues = null;//"11,22,33";
foreach(var str in (delimitedvalues?? string.Empty).split(','))
{
    string testvalue = "Test Value" + str;
}

0
投票

您必须确保要获取的对象在迭代其字段之前不会返回为null(您的列表,_listObj)。即使您确定要传入的GUID与尝试获取的列表相匹配,也应该检查该对象是否为null,并检查字段数,如果获得要传递的ID的项,在:

© www.soinside.com 2019 - 2024. All rights reserved.