我有object value
可能代表不同类型的对象(字符串,枚举,列表等)。我想要做的是检查变量是否为空列表,如下所示:
(value is List<object> && ((List<object>)value).Count == 0)
或
(value is List<dynamic> && ((List<dynamic>)value).Count == 0)
但是真正的空列表都返回false
我想知道最好的方法是什么,以及在C#中是否有像Java List<?>
这样的东西。
答案 0 :(得分:3)
您可以将其投放到IList
if( (value as IList).Count == 0 )
如果您不确定该值是否实现IList
,最好检查null:
var list = value as IList;
if(list != null && list.Count == 0)
答案 1 :(得分:0)
您可以创建一个帮助程序类:
public static class CollectionHelpers
{
public static bool IsNullOrEmpty(this ICollection collection)
{
return collection == null || collection.Count == 0;
}
}
并像这样使用它:
class Program
{
static void Main(string[] args)
{
object list = new List<int> { 1, 2, 3 };
Console.WriteLine((list as ICollection).IsNullOrEmpty());
}
}
或
class Program
{
static void Main(string[] args)
{
var list = new List<int>();
Console.WriteLine(list.IsNullOrEmpty());
}
}