如何确定匿名类型的对象是否为空
本文关键字:对象 是否 类型 何确定 | 更新日期: 2023-09-27 17:57:23
我确信答案非常简单,但我正在尝试编写一个if语句(C# 5.0)来确定匿名类型是否为空。这是我代码的简化版本:
public void DoSomething(object attributes)
{
// This is the line I need??
if (atrributes != new {}) {
}
}
属性变量根据需要动态创建,有时它是空的。
那么如何确定匿名类型是否为空呢?
匿名类型不提供==
运算符重载,尽管在这种情况下无关紧要,因为其中一个参数是类型化对象。但是,C# 编译器确实提供了 Equals、GetHashCode 和 ToString 实现。
使用静态 object.Equals
, 方法,该方法将执行适当的空检查,然后在第一个参数上调用虚拟 Equals 方法:
object.Equals(attributes, new { });
如果您担心每个比较的分配开销,也可以缓存静态实例。
如果空的意思是没有属性,则可以使用反射:
var o1 = new {};
o1.GetType().GetProperties().Count(); //==0
var o2 = new {test=1};
o2.GetType().GetProperties().Count(); //==1