Если массив пуст, похоже, что Вы не можете проверить, что это - длина с помощью ".length". Что состоит в том, чтобы проверить лучший способ, пуст ли массив?
Вы можете абсолютно точно проверить длину пустого массива. Однако, если вы попытаетесь сделать это на нулевой ссылке, вы получите исключение. Я подозреваю, что вы столкнулись именно с этим. Однако вы можете справиться с обеими проблемами:
if (array == null || array.Length == 0)
Если причина не в этом, пожалуйста, приведите короткую, но полную программу, демонстрирующую проблему. Если причина в этом, стоит потратить время на то, чтобы убедиться, что вы понимаете, что такое нулевые ссылки и "пустые" коллекции/строки/что угодно.
Да, для безопасности я бы сделал так:
if(array == null || array.Length == 0)
Вы можете использовать
if (array == null || array.Length == 0)
ИЛИ
if (!(array != null && array.Length >= 0))
ПРИМЕЧАНИЕ !!!!! Чтобы гарантировать, что C # правильно реализует короткое замыкание; вы должны сравнить этот объект с NULL, прежде чем переходить к сравнению объекта дочерними элементами.
C # 7.0 и выше
if(!array?.Length >= 0)
Вы можете использовать .Length
== 0, если длина пуста и массив существует, но уверены ли вы, что он не равен нулю?
Как уже предлагали другие, вероятно, вы получаете исключение NullReferenceException
, которого можно избежать, сначала проверив, является ли ссылка нулевой
. Однако вы должны спросить себя, действительно ли такая проверка оправдана. Вы бы сделали это, потому что ссылка действительно может быть null
, а то, что null
имеет особое значение в вашем коде? Или вы будете делать это, чтобы скрыть ошибку? Природа вопроса наводит меня на мысль, что это будет последнее. В этом случае вам действительно нужно глубоко изучить код и выяснить, почему эта ссылка не была инициализирована должным образом.
Jon Skeet ответил правильно. Просто помните, что порядок проверки в "IF" важен.
Проверьте наличие null
перед длиной. Я также предпочитаю помещать null
в левой части равенства - это привычка, которую я перенял из Java и которая сделала код более эффективным и быстрым... Я не думаю, что это важно в большом количестве приложений сегодня, но это хорошая практика!
if (null == array || array.Length == 0)
Предложенный вами тест подходит, если массив инциализирован...
Мартин.
сначала проверьте, является ли массив нулевым, чтобы избежать исключения нулевого указателя
логика в любом языке: если массив null или пуст :do ....
Это лучший способ. Обратите внимание, что Array - это объект в NET, поэтому перед этим нужно проверить его на null.
вы имеете в виду пустой или null, две разные вещи,
если массив инстанцирован, но пуст, то длина верна, если он не был инстанцирован, то проверьте на null