首页 > 后端开发 > C++ > C# 列表可以保存具有不同类型参数的多个泛型类型吗?

C# 列表可以保存具有不同类型参数的多个泛型类型吗?

Barbara Streisand
发布: 2025-01-18 16:32:13
原创
439 人浏览过

Can a C# List Hold Multiple Generic Types with Different Type Parameters?

使用具有多个泛型类型的 C# 列表:解决方案

挑战在于创建一个能够在同一列表中保存具有不同类型参数的多个泛型类型的 C# 列表。 考虑一个仅限于值类型的 Metadata<T> 类。目标是创建一个可以同时存储 Metadata<int>Metadata<bool>Metadata<double> 对象的列表。

直接使用 Metadata<T> 列表是不可能的,因为 T 必须是单个具体类型。 然而,使用继承的解决方案提供了一种实用的方法。

使用继承的解决方案:

这种方法引入了一个抽象基类Metadata并从中派生出像Metadata<T>这样的专门类。

<code class="language-csharp">public abstract class Metadata { }

public class Metadata<T> : Metadata where T : struct
{
    private T mDataType; 
    // ... other members ...
}</code>
登录后复制

现在,可以创建抽象基类Metadata的列表:

<code class="language-csharp">List<Metadata> metadataObjects = new List<Metadata>();</code>
登录后复制

此列表现在可以容纳各种 Metadata<T> 类型的实例:

<code class="language-csharp">metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());</code>
登录后复制

这通过为列表提供通用类型 (Metadata) 优雅地解决了问题,同时允许通过继承进行特定于类型的实现。 访问每个对象中的特定 T 需要转换回适当的 Metadata<T> 类型。 这是在 C# 中处理多态性和泛型类型时的常见模式。

以上是C# 列表可以保存具有不同类型参数的多个泛型类型吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板