如何检查字节数组是否为空

本文关键字:数组 字节数 是否 字节 何检查 检查 | 更新日期: 2023-09-27 18:13:02

我正在下载GetSourceAttachment方法的word文件。当这个方法返回空字节时,我的字节Attachment数组会给出一个错误:

对象引用未设置对象的实例

它给出了在if条件下检查Attachment长度时的错误。

有人能帮我默认初始化字节数组,然后检查长度吗?

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
{
}

如何检查字节数组是否为空

只需进行

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

来自&amp;操作员

条件AND运算符(&&(对其布尔值执行逻辑ANDoperations,,但仅在必要时计算其第二个操作数

您必须交换测试的顺序:

发件人:

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

收件人:

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

第一个版本尝试首先取消引用Attachment,因此如果它为null则抛出。第二个版本将首先检查是否为空,只有在长度不为空时(由于"布尔短路"(才继续检查长度。


[编辑]我来自未来,告诉你,在C#的后续版本中,你可以使用";空条件运算符";将上面的代码简化为:

if (Attachment?.Length > 0)
        

.Net V 4.6 OR C#6.0

试试这个

 if (Attachment?.Length > 0)

您的支票应该是:

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

首先检查附件是否为空,然后检查长度,因为您使用的是&&,这将导致短路评估

&amp;操作员(C#参考(

条件AND运算符(&&(对其布尔值执行逻辑AND操作数,但仅在必要时计算其第二个操作数

以前您有这样的条件:(Attachment.Length > 0 && Attachment != null),因为第一个条件是访问属性Length,如果Attachment为null,则会出现异常。对于修改后的条件(Attachment != null && Attachment.Length > 0),它将首先检查null,并且只有在Attachment不为null时才会进一步移动。

在我看来,最好的if语句是:

if(Attachment  is { Length: > 0 })

该代码同时检查:附件的null和长度

现在我们也可以使用:

if (Attachment != null  && Attachment.Any())

对于开发人员来说,Any((通常比检查Length((>0更容易一目了然。也与处理速度差别很小。

在Android Studio版本3.4.1

if(Attachment != null)
{
   code here ...
}