如何键入约束泛型方案
本文关键字:方案 泛型 约束 何键入 | 更新日期: 2023-09-27 17:55:11
我正在尝试制作各种自定义Collection<X, Y...> : ICollection<X>, IList<Y>
。它继承自ICollection<T>
,IList<T>
因为我决定使用通用版本,因为它们更现代。以下是我需要的约束:
- 可以将
T
类型(值类型或引用类型)的项添加到集合中。
也可以无限添加 IEnumerable<T>
或IEnumerable<IEnumerable<T>>
此类此类项目:)
如何创建具有这些约束的泛型类,即 where 子句是什么?这可能吗?这是使用非泛型ICollection
、IList
和无泛型的合适位置吗?
如 MSDN 中所述,类型约束是可能的,您可以接受一个或多个约束。
还要检查 WHERE 使用情况
希望对您有所帮助。
这是你想要的吗?
public interface IBlock<T>
where T : IBlock<T>
{
}
public class Block<T> : Collection<T>, IBlock<Block<T>>
{
}
class Program
{
static void Main(string[] args)
{
var list_1=new Block<int[]>();
list_1.Add(new int[] { 1, 2, 3} );
list_1.Add(new int[] { 4, 5} );
var list_2=new Block<int[]>();
list_2.Add(new int[] { -1, 4} );
list_2.Add(new int[] { 2, 6, 8} );
var list_list =new Block<Block<int[]>>();
list_list.Add(list_1);
list_list.Add(list_2);
int x=list_list[1][0][1];
// x=4
}
}