Если (Массив. Длина == 0)

Если массив пуст, похоже, что Вы не можете проверить, что это - длина с помощью ".length". Что состоит в том, чтобы проверить лучший способ, пуст ли массив?

54
задан sooprise 9 July 2010 в 03:06
поделиться

10 ответов

Вы можете абсолютно точно проверить длину пустого массива. Однако, если вы попытаетесь сделать это на нулевой ссылке, вы получите исключение. Я подозреваю, что вы столкнулись именно с этим. Однако вы можете справиться с обеими проблемами:

if (array == null || array.Length == 0)

Если причина не в этом, пожалуйста, приведите короткую, но полную программу, демонстрирующую проблему. Если причина в этом, стоит потратить время на то, чтобы убедиться, что вы понимаете, что такое нулевые ссылки и "пустые" коллекции/строки/что угодно.

138
ответ дан 7 November 2019 в 07:37
поделиться

Да, для безопасности я бы сделал так:

if(array == null || array.Length == 0)
13
ответ дан 7 November 2019 в 07:37
поделиться

Вы можете использовать

if (array == null || array.Length == 0)

ИЛИ

if (!(array != null && array.Length >= 0))

ПРИМЕЧАНИЕ !!!!! Чтобы гарантировать, что C # правильно реализует короткое замыкание; вы должны сравнить этот объект с NULL, прежде чем переходить к сравнению объекта дочерними элементами.

C # 7.0 и выше

if(!array?.Length >= 0)
8
ответ дан 7 November 2019 в 07:37
поделиться

Вы можете использовать .Length == 0, если длина пуста и массив существует, но уверены ли вы, что он не равен нулю?

4
ответ дан 7 November 2019 в 07:37
поделиться

Как уже предлагали другие, вероятно, вы получаете исключение NullReferenceException , которого можно избежать, сначала проверив, является ли ссылка нулевой . Однако вы должны спросить себя, действительно ли такая проверка оправдана. Вы бы сделали это, потому что ссылка действительно может быть null , а то, что null имеет особое значение в вашем коде? Или вы будете делать это, чтобы скрыть ошибку? Природа вопроса наводит меня на мысль, что это будет последнее. В этом случае вам действительно нужно глубоко изучить код и выяснить, почему эта ссылка не была инициализирована должным образом.

2
ответ дан 7 November 2019 в 07:37
поделиться

Jon Skeet ответил правильно. Просто помните, что порядок проверки в "IF" важен. Проверьте наличие null перед длиной. Я также предпочитаю помещать null в левой части равенства - это привычка, которую я перенял из Java и которая сделала код более эффективным и быстрым... Я не думаю, что это важно в большом количестве приложений сегодня, но это хорошая практика!

if (null == array || array.Length == 0)
2
ответ дан 7 November 2019 в 07:37
поделиться

Предложенный вами тест подходит, если массив инциализирован...

Мартин.

1
ответ дан 7 November 2019 в 07:37
поделиться

сначала проверьте, является ли массив нулевым, чтобы избежать исключения нулевого указателя

логика в любом языке: если массив null или пуст :do ....

1
ответ дан 7 November 2019 в 07:37
поделиться

Это лучший способ. Обратите внимание, что Array - это объект в NET, поэтому перед этим нужно проверить его на null.

2
ответ дан 7 November 2019 в 07:37
поделиться

вы имеете в виду пустой или null, две разные вещи,

если массив инстанцирован, но пуст, то длина верна, если он не был инстанцирован, то проверьте на null

0
ответ дан 7 November 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: