如何检查字节数组是否为空
本文关键字:数组 字节数 是否 字节 何检查 检查 | 更新日期: 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)
来自&;操作员
条件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)
首先检查附件是否为空,然后检查长度,因为您使用的是&&
,这将导致短路评估
&;操作员(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 ...
}