使用两种类型的组合创建列表

本文关键字:组合 创建 列表 类型 两种 | 更新日期: 2023-09-27 18:02:40

我需要创建一个列表,其中每个成员是a和b两种类型的组合,这可能吗?例如,假设A和B:

class A
{
    int a1;
    string a2;
}
class B
{
    int b1;
    string b2;
}

我想创建:

List<A&B> SampleList;

的方式a &B包含以下属性:

    int a1;
    string a2;
    int b1;
    string b2;

使用两种类型的组合创建列表

尝试元组:https://msdn.microsoft.com/en-us/library/dd268536(v=vs.110).aspx

那么你可以使用:

var list = new List<Tuple<int, string>>();
list.Add(new Tuple(2, "some text));

并读取如下值:

Console.WriteLine(list[0].Item1); // writes 2
Console.WriteLine(list[0].Item2); // writes "some text"

方案一:使用两个单独的列表
解决方案二:使用字典。
解决方案3:创建一个类C,将a和B作为(public)成员,并创建一个C的列表。

三个选项:

  • 创建一个新的类或结构:

    public class AAndB
    {
        private readonly A a;
        private readonly B b;
        public AAndB(A a, B b)
        {
            this.a = a;
            this.b = b;
        }
        // etc
    }
    
  • 使用Tuple<A, B>做同样的事情,但不创建一个新的类型

  • 如果你只在一个方法中需要这个,使用匿名类型,例如

    var mixed = as.Zip(bs, (a, b) => new { A = a, B = b });