gpt4 book ai didi

c# - 通用类中的通用集合

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:57 25 4
gpt4 key购买 nike

我有一个自定义类(我们称它为 MyClass),如下所示:

public class MyClass
{
private List<MyClass> list;
private object data;
}

但是,我想摆脱 object 属性,而是使用通用类。所以像这样:

public class MyClass<T>
{
private List<MyClass<T>> list;
private T data;
}

但是,我需要这种行为:

MyClass<Foo> foo = new MyClass<Foo>;
foo.list = new List<MyClass<Bar>>;

所以我需要能够为 foo 中的 foo 实例和列表/数据属性设置不同的数据类型。但是通用示例中的 T 将是相同的,并且只允许这样:

MyClass<Foo> foo = new MyClass<Foo>;
foo.list = new List<MyClass<Foo>>;

foo.list 中的每个项目都将再次具有一个可能属于不同类型的列表。当我编译 MyClass 时,我不知道列表/数据属性中的数据类型或将有多少级别。如何构建这种灵活的结构?

最佳答案

泛型旨在允许编译器对类型使用执行检查,并且它们还提供一些极好的额外好处。

如果每次更新 list,您所描述的内容无法通过泛型实现如果有一个可能不同类型的列表,那么泛型就帮不了你了。

但是,如果这些类型中的每一个都共享一个公共(public)基类型或共享一个公共(public)接口(interface),那么您可以将其用作您的 T对于列表,这将允许您使用它们。

但是如果 MyClass 的每个实例只允许一种类型的列表 MyClass<?>那么你可以修改MyClass因此:

public class MyClass<T, TList>
{
private List<MyClass<T, TList>> list;
private T data;
}

关于c# - 通用类中的通用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com