C#:正确的数据结构是什么?(锯齿状对象“数组”)

C#:正确的数据结构是什么?(锯齿状对象“数组”),c#,data-structures,jagged-arrays,C#,Data Structures,Jagged Arrays,我有一个名为taggedInput的IWord对象的列表。 我需要将每个元素与它自己的列表的IWord对象相关联。 为此,我需要使用不同的数据类型 在此数据类型中,父列表和子列表都必须是动态的,并且必须在运行时填充 父列表必须允许重复值(因此它不能是字典对象) 我打算遍历父列表,并操作(添加、删除、重新组织)子列表中的元素。父列表和子列表中的每个元素都必须可以通过其在列表中的位置进行访问 以下是我为更好地说明我需要什么而制作的图像: 用于此目的的最佳数据类型是什么?我需要一些类似于List (

我有一个名为
taggedInput
IWord
对象的
列表。
我需要将每个元素与它自己的
列表
IWord
对象相关联。 为此,我需要使用不同的数据类型

在此数据类型中,父列表和子列表都必须是动态的,并且必须在运行时填充

父列表必须允许重复值(因此它不能是
字典
对象)

我打算遍历父列表,并操作(添加、删除、重新组织)子列表中的元素。父列表和子列表中的每个元素都必须可以通过其在列表中的位置进行访问

以下是我为更好地说明我需要什么而制作的图像:

用于此目的的最佳数据类型是什么?我需要一些类似于
List

(但那不是一个列表)

我假设您不能更改
IWord
接口?在这种情况下,我会使用另一种类型,让你形成所需的关系

public class WordWithRelatives
{
   public IWord Word {get;set;}
   public List<IWord> Relatives {get;set;}
}
public类WordWithRelatives
{
公共IWord字{get;set;}
公共列表相关项{get;set;}
}
然后你只需要上面的列表

var taggedInput = List<WordWithRelatives>();
var taggedInput=List();

您还可以通过将
IWord
接口方法转发到它包含的
Word
实例,使
WordWithRelatives
实现
IWord

尝试一个元组,它只是一个具有两个属性T1和T2的数据结构。这些都是.NET4内置的,但必须在任何地方手动创建below@PostMan啊,好的,很好,这看起来是一个解决方案。这就是你的意思,对吗?新列表()@Nunesspascal只是因为它是2d。我只是说列表本身不能令人满意,列表不是一个有效的结构。创建一个名为
class WordList:List{…}
的自定义类,并在其中添加一个名为
List Children{get;private set;}
的属性,然后创建一个WordList-
List