Обработка исключений Null в цикле foreach - PullRequest
0 голосов
/ 04 августа 2011

У меня есть список X с некоторой строкой и нулевым значением.Я повторяю цикл 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}}

Ответы [ 6 ]

4 голосов
/ 04 августа 2011

Попробуйте код ниже:

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

}
0 голосов
/ 07 июня 2015
string delimitedvalues = null;//"11,22,33";
foreach(var str in (delimitedvalues?? string.Empty).split(','))
{
    string testvalue = "Test Value" + str;
}

Надеюсь, что приведенная выше конструкция полезна!

0 голосов
/ 30 января 2014

Почему бы вам не использовать это с оператором null-coalescing

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

?? Оператор называется оператором нуль-слияния. Возвращает левый операнд, если операнд не равен нулю; в противном случае возвращается правый операнд.

0 голосов
/ 04 августа 2011

Список х в списках? Вы, вероятно, хотите сделать:

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

А строки на самом деле нулевые или просто пустые? Это разница.

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

Я подозреваю, что проблема в неправильной реализации цикла foreach, который приводит к появлению пустых ошибок, поскольку объекты внутри цикла не существуют.

0 голосов
/ 04 августа 2011

Код указан неверно.Я полагаю, что вы хотите проверить X на Null в цикле foreach.Если это логически правильно или нет, то только вы можете знать, что логика выходит за рамки предоставленного кода и зависит от того, где вы его фактически используете.

Лично я не нахожу ничего плохого в проверке нулей в цикле foreach.

Вы также, например, можете использовать Linq для запроса сначала значений Null и после ненулевых значений.Вопрос выбора дизайна.

С уважением.

0 голосов
/ 04 августа 2011

Этот код выглядит довольно подозрительно для меня.

Во-первых, у вас действительно есть список списков? Если это так, я бы подумал, что вам придется перебирать и каждый элемент во внутреннем списке:

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

Во-вторых, вы уверены, что переменная Lists не содержит нулей? Возможно, это на самом деле x, что является нулем, и это является причиной вашего исключения из Null Reference:

foreach(List x in Lists)
{
    if (x != null && x.fields != null)
        // blah
    else
        // blah
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...