C# 转换为C中任何类型的泛型#
我有一个C# 转换为C中任何类型的泛型#,c#,generics,casting,C#,Generics,Casting,我有一个对象值,它可能表示不同类型的对象(字符串、枚举、列表等)。我要做的是检查变量是否为空列表,如下所示: (value is List<object> && ((List<object>)value).Count == 0) class Program { static void Main(string[] args) { object list = new List<int> { 1, 2, 3 };
对象值
,它可能表示不同类型的对象(字符串、枚举、列表等)。我要做的是检查变量是否为空列表,如下所示:
(value is List<object> && ((List<object>)value).Count == 0)
class Program
{
static void Main(string[] args)
{
object list = new List<int> { 1, 2, 3 };
Console.WriteLine((list as ICollection).IsNullOrEmpty());
}
}
(值为列表&((列表)值)。计数==0)
或
(值为列表&((列表)值)。计数==0)
但对于真正的空列表,两者都返回false。我想知道做这件事的最佳方法是什么,如果有类似Java的
列表的东西在C#中,你可以把它转换成
如果不确定该值是否实现了IList
,最好检查null:
var list = value as IList;
if(list != null && list.Count == 0)
可以创建帮助器类:
public static class CollectionHelpers
{
public static bool IsNullOrEmpty(this ICollection collection)
{
return collection == null || collection.Count == 0;
}
}
然后像这样使用它:
(value is List<object> && ((List<object>)value).Count == 0)
class Program
{
static void Main(string[] args)
{
object list = new List<int> { 1, 2, 3 };
Console.WriteLine((list as ICollection).IsNullOrEmpty());
}
}
类程序
{
静态void Main(字符串[]参数)
{
对象列表=新列表{1,2,3};
WriteLine((作为ICollection.IsNullOrEmpty()列出);
}
}
或
类程序
{
静态void Main(字符串[]参数)
{
var list=新列表();
Console.WriteLine(list.IsNullOrEmpty());
}
}
使用System.Collections时@GeneMarin可能重复代码>
class Program
{
static void Main(string[] args)
{
var list = new List<int>();
Console.WriteLine(list.IsNullOrEmpty());
}
}