Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换为C中任何类型的泛型#_C#_Generics_Casting - Fatal编程技术网

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());
    }
}