2011-08-04 92 views
-1

我有一些字符串和空值的列表X.我迭代foreach循环将值绑定到文本框。如果我在列表中获得任何空值X,那么foreach循环会终止,并获取如何处理它的空异常。在foreach循环中的空异常处理

我正在检查每个循环内部的条件。但我ntnink它不正确logcally。

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}} 
+1

你能不能更精确...你提供的代码不是有效的C#代码...我不明白出了什么问题 –

+0

不知道明白。 –

+0

我认为x是空的。 – Shekhar

回答

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是空的,这是你的空引用异常的原因:

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

提供的代码是不正确的。我想你想在foreach循环中检查X for Null。如果这在逻辑上是正确的,而不是只有你可能知道逻辑超出了所提供的代码,并取决于你实际使用它的地方。

我个人没有发现任何不好的东西来检查foreach循环中的空值。例如,您也可以使用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

你为什么不使用这样的与空合并运算

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; 
} 

希望上面的构造是有用的!