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

时间:2013-05-10 06:16:03

标签: c#

这里我下载了GetSourceAttachment方法的word文件。当这个方法返回空字节然后我的字节附件数组给出一个错误(对象引用没有设置对象的实例)。当我检查附件的长度如果条件然后它的给错误。任何人都可以帮我默认初始化字节数组然后检查长度。

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
{

}

6 个答案:

答案 0 :(得分:69)

只做

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

来自 && Operator

  

条件AND运算符(&amp;&amp;)执行其bool的逻辑AND   操作数,但仅在必要时才计算其第二个操作数。

答案 1 :(得分:16)

您必须更换测试顺序:

自:

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

要:

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

第一个版本首先尝试取消引用Attachment,因此如果它为null则抛出。第二个版本将首先检查空值,并且只检查长度是否为空(由于“布尔短路”)。

答案 2 :(得分:11)

.Net V 4.6或C#6.0

试试这个

 if (Attachment?.Length > 0)

答案 3 :(得分:7)

您的支票应该是:

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

首先检查附件是否为空,然后长度,因为您使用的&&将导致short-circut evaluation

&& Operator (C# Reference)

  

条件AND运算符(&amp;&amp;)执行其bool的逻辑AND   操作数,但仅在必要时评估其第二个操作数

以前您的条件如下:(Attachment.Length > 0 && Attachment != null),因为第一个条件是访问属性Length,如果Attachment为空,您最终会遇到异常,修改条件(Attachment != null && Attachment.Length > 0),它将首先检查null,并且仅在Attachment不为null时才进一步移动。

答案 4 :(得分:0)

现在我们还可以使用:

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

与检查Length()> 0相比,对开发人员而言,Any()通常一目了然。与处理速度的差异也很小。

答案 5 :(得分:0)

在Android Studio版本3.4.1

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