2013-07-05 3 views
-2

Я получаю System.NullReferenceException: Object reference not set to an instance of an object. Исключение из кода ниже.Исключение NullReference в C#

string avblCount = "0"; 

    if (!string.IsNullOrWhiteSpace(item.PART_AVAILABILITY.AVAIL_COUNT.ToString() as string)) 
    { 
     avblCount = item.PART_AVAILABILITY.AVAIL_COUNT.ToString(); 
    } 

Исключение произошло из этой строки.

if (!string.IsNullOrWhiteSpace(item.PART_AVAILABILITY.AVAIL_COUNT.ToString() as string))

Как я могу это исправить?

+0

item.PART_AVAILABILITY.AVAIL_COUNT.ToString() как строка) почему? делать только как строку, он не будет вызывать ошибку – wudzik

+2

'item' или' CAPSLOCKHAPPYPROPERTY' является нулевым, отредактируйте, почему бы просто не проверить, являются ли они null, а не конвертируются в строку сначала? – Sayse

+0

делает каждую часть товара.PART_AVAILABILITY.AVAIL_COUNT есть? Что, если, например, PART_AVAILABILITY имеет значение NULL? –

ответ

3

Один или несколько из этих объектов являются недействительными:

  • товар
  • item.PART_AVAILABILITY
  • item.PART_AVAILABILITY.AVAIL_COUNT

Вы должны проверить, какой из них, а затем действовать соответственно

+0

Вы серьезно? Если элемент имеет значение NULL, то 3 являются нулями. Если элемент не является нулевым, а PART_AVAILABILTY, то есть 2 нуля. Если элемент и PART_AVAILABILTY не являются нулевыми, то AVAIL_COUNT. – LittleSweetSeas

+0

Точно: они приводят к NullReferenceEx в соответствии с вопросом. Это просто пламя или проверка словаря? – LittleSweetSeas

+0

Ну, я не буду спорить с номором, но, на мой взгляд, если элемент имеет значение null, все его свойства «неопределены»: в .NET нет «неопределенного» ключевого слова, и, очевидно, нет смысла вступать в размышления чтобы проверить, доступно ли свойство в заданном объекте. Итак, я использовал «null» неспецифическим способом, но вы правы: uneclared/undefined! = Null для глаз компилятора :) – LittleSweetSeas

Смежные вопросы