Подтвердить что ты не робот

Как проверить массив байтов пустым или нет?

здесь im загружает файл слова для метода GetSourceAttachment. Когда этот метод возвращает пустые байты, тогда мой байтовый массив Attachment дает ошибку (ссылка на объект не задает экземпляр объекта). Когда im проверяет длину Attachment в if condition, то это дает Ошибка. может ли кто-нибудь помочь мне по умолчанию инициализировать массив байтов, а затем проверить длину.

try
{
        byte[] Attachment = null ;

        string Extension = string.Empty;
        ClsPortalManager objPortalManager = new ClsPortalManager();
        Attachment = objPortalManager.GetSourceAttachment(Convert.ToInt32(hdnSourceId.Value), out Extension);
        if (Attachment.Length > 0 && Attachment != null)
        {
            DownloadAttachment("Attacment", Attachment, Extension);
        }
        else
        {
            ClientScript.RegisterStartupScript(typeof(Page), "SymbolError", "<script type='text/javascript'>alert('Attachment is not Uploaded !');</script>");
        }            
}
catch
{

}
4b9b3361

Ответ 1

Просто сделай

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

Из && & & Оператор

Оператор условного-И (&) выполняет логическое-И его bool операнды , но при необходимости оценивает только свой второй операнд.

Ответ 2

Вы должны поменять порядок своего теста:

From:

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

To:

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

Первая версия пытается сначала разыменовать Attachment и, следовательно, выдает, если она равна null. Вторая версия сначала проверит нуль и только продолжит проверять длину, если она не является нулевой (из-за "булевого короткого замыкания" ).

Ответ 3

Ваша проверка должна быть:

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

Сначала проверьте, имеет ли вложение значение NULL, а затем длина, поскольку вы используете &&, что приведет к оценке коротких циклов

&& & && & Оператор (ссылка на С#)

Оператор условного-И (&) выполняет логическое-И его bool операндов, но оценивает только свой второй операнд.

Раньше у вас было условие типа: (Attachment.Length > 0 && Attachment != null), так как первое условие имеет доступ к свойству Length, а если Attachment равно null, вы получите исключение. С измененным условием (Attachment != null && Attachment.Length > 0) оно будет сначала проверьте значение null и продолжайте движение, если Attachment не равно null.

Ответ 4

.Net V 4.6 ИЛИ С# 6.0

Попробуйте это

 if (Attachment?.Length > 0)