繁体   English   中英

如何检查动态对象是否为空

[英]How to check if a dynamic object is null

我最近看到以下代码,这让我很困惑。

dynamic resultObj = SomeClass.run(arg);
if (resultObj == null || resultObj.ToString() == null)
{
    /* Error handling */
}

假设SomeClass是你的典型类(它没有覆盖ToString() ),有没有理由为什么条件的第二部分是必要的? 此外,此代码是否存在其他潜在问题?

动态可以直接检查为null,但某些情况可能会导致错误的答案。 为了检查动态为null,您应该将其强制转换为对象。 例如,

dynamic post = SomeMethod();
if (post.modified == null){
//could return errors.
}

为了检查此属性是否为null,您应该执行以下操作:string.IsNullOrEmpty(Convert.ToString(post.Modified));

同样,要检查动态为null,您应该执行以下操作:

if ((object)post != null)

参考文献:

https://ericlippert.com/2018/11/19/a-dynamic-definite-assignment-puzzle-part-2/

https://forums.asp.net/t/1592751.aspx?How+to+check+for+null+empty+strings+on+dynamic+objects+

因此,通过检查resultObj.ToString()== null我相信这可能会将动态转换为对象,因此可以进行真正的空检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM