[英]How to check if given object is an empty / null enumerable?
我有一個要求,我得到一個 object ( System.Object
),我需要檢查 object 是 Z37BDA6259CC0C1DAE 還是空的。 這個 object 可以是值類型/派生自IEnumerable<T>
基本上,我想要一個像這樣的 function:
public void Validator(object val)
{
// returns true, if non-empty and non-null
}
您可以簡單地將switch
表達式與類型模式一起使用:
public bool Validator(object val) => val switch
{
null => false,
IEnumerable e => e.GetType().IsGenericType && e.GetEnumerator().MoveNext(),
_ => true
};
這僅適用於通用枚舉。 如果您希望它也適用於非泛型枚舉,只需省略e.GetType().IsGenericType &&
:
public bool Validator(object val) => val switch
{
null => false,
IEnumerable e => e.GetEnumerator().MoveNext(),
_ => true
};
更正您的方法簽名以返回bool
而不是void
:
public static bool Validator(object val) {
return val is IEnumerable e && e.Cast<object>().Any();
}
// some tests
var isNull = Validator(null); // false
var isScalar = Validator(0); // false
var isArray = Validator(new[] { 1 }); // true
var isEmpty = Validator(new object[] {}); // false
var isNonGeneric = Validator(new ArrayList() { 1, 2 }); // true
var isGeneric = Validator(new List<int> { 1, 2 }); // true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.