【问题标题】:Adding different types of objects/variables to a single List in C#?将不同类型的对象/变量添加到 C# 中的单个列表?
【发布时间】:2017-08-08 16:18:06
【问题描述】:

我有一个泛型类定义为:

public class MyClass<T> {
   // some properties
}

public class CustomClass {
   // some properties
}

这些类的三个实例定义如下:

MyClass<int> instance1 = new MyClass<int>();
MyClass<string> instance2 = new MyClass<string>();
MyClass<CustomClass> instance3 = new MyClass<CustomClass>();

我还必须存储一些原始类型

string s1 = "My string";
int i1 = 5;

如何创建一个可以包含上述所有变量的列表?

【问题讨论】:

  • List&lt;object&gt;?
  • 当然,为什么要在同一个列表中存储不同的类型呢?这不是一种常用的方法,稍后会在一些讨厌的代码中使用。
  • List&lt;object&gt; totals = new List&lt;object&gt;(); totals.AddRange(instance1); totals.AddRange(instance2); totals.AddRange(instance3); 是最简单的方法,因为 C# 中的所有类都基于 object
  • @DavidG:出于好奇问这个就完事了:)

标签: c# generics


【解决方案1】:

如果您可以为这三种类型中的每一种找到一个通用接口并创建它,那么您将能够创建一个需要所有三种类型的List&lt;IMyClass&gt;

您可以阅读here 以了解有关接口的更多信息。

只要MyClass&lt;T&gt; 实现了该接口,那么列表就会全部接受它们。

【讨论】:

    【解决方案2】:

    怎么样:

    var myList = new List<object> {instance1, instance2, instance3};
    

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多