如何在列表List <T,T2>中使用两种类型

Ali*_*zra 0 c# generics

我们可以List <T> 在类类型中使用两个不同的类型参数或者再添加一个参数吗?

例如:

public class ClassA
{
 public int a {get;set;}
 public int b {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要列表中的更多属性而不编辑ClassA

public string c {get;set;}

public List<ClassA, c> list = new List<ClassA, c>
Run Code Online (Sandbox Code Playgroud)

我应该能够访问List中的c

item[0].a
item[0].b
item[0].c
Run Code Online (Sandbox Code Playgroud)

Sam*_*nen 7

如果您使用的是最新的C#版本,则可以使用元组:

public List<(ClassA, string)> list = new List<(ClassA, string)>
Run Code Online (Sandbox Code Playgroud)

您也可以为它们命名

public List<(ClassA a, string c)> list = new List<(ClassA a, string c)>
Run Code Online (Sandbox Code Playgroud)

但你无法直接访问ClassA中的任何内容,你必须使用第一个对象的名称.

  • 元组不仅限于最新版本,只是Value Tuple和名称元组,这使它们更好.旧版本的C#仍然具有Tuple <T1,T2,...>另一个选项也是创建一个新的包装类,这是正确的取决于您的方案.如果你发现自己传递了许多元组类型,那么一个类可能会更好 (2认同)