如果泛型类型T是一个集合,如何将其转换为空集合
本文关键字:集合 空集 转换 一个 泛型类型 如果 | 更新日期: 2023-09-27 17:58:34
我想要一个类似于default(T)的运算符,但如果T是集合类型而不是null,则返回一个空集合。您将如何在PCL库中做到这一点?
示例:
Where T are following types
T -> string
T1 -> IEnumerable<string>
T2 -> IList<string>
default value would be returned as following:
Default<T> -> null
Default<T1> -> IEnumerable<string> (empty)
Default<T2> -> IList<string> (empty)
您要查找的方法是静态Enumerable.Empty<T>()
。我只是不知道你说的"收藏类型"是什么意思。
var defaultAny = default(T);
var defaultCollectionOfAny = Enumerable.Empty<T>();
编辑
跟进您的最新问题:任何给定的接口都应该使用什么具体类型?对于IList<string>
,您可能想要一个简单的List<string>
。但这并不总是那么明显。
考虑一下这个虚构的方法调用:
var collection = Default(IEnumerable<KeyValuePair<string, string>>)
可能的退货类型:
Dictionary<string, string>
List<KeyValuePair<string, string>>
KeyValuePair<string, string>[]