gpt4 book ai didi

c# - 通用类型的集合

转载 作者:IT王子 更新时间:2023-10-29 04:10:56 27 4
gpt4 key购买 nike

如果我有一个泛型类:

public class MyClass<T> 
{
public T Value;
}

我想实例化几个项目,例如...

new MyClass<string>
new MyClass<int>

...并将它们添加到集合中。如何定义集合以便它可以包含泛型类型列表?然后我想在某个时候循环访问集合,并使用 Value 属性。可能的?

最佳答案

让您的泛型类继承自非泛型基类,或实现非泛型接口(interface)。然后您可以拥有这种类型的集合,并在您用来访问集合内容的任何代码中进行转换。

这是一个例子。

public abstract class MyClass
{
public abstract Type Type { get; }
}

public class MyClass<T> : MyClass
{
public override Type Type
{
get { return typeof(T); }
}

public T Value { get; set; }
}

// VERY basic illustration of how you might construct a collection
// of MyClass<T> objects.
public class MyClassCollection
{
private Dictionary<Type, MyClass> _dictionary;

public MyClassCollection()
{
_dictionary = new Dictionary<Type, MyClass>();
}

public void Put<T>(MyClass<T> item)
{
_dictionary[typeof(T)] = item;
}

public MyClass<T> Get<T>()
{
return _dictionary[typeof(T)] as MyClass<T>;
}
}

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

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