两棵树:一棵树的节点包含一个对象列表;第二棵树的对象包含对第一棵树的对象的引用。可以用C#完成吗?

时间:2019-08-03 21:14:24

标签: c# c++ pointers tree ref

我要构建2个树结构。第一棵树将包含节点,每个节点都有我的frame.capturedImage对象的列表:

Range

树形结构如下:

enter image description here

然后我要从第一棵树构建第二棵树。它将具有类似的结构,但是,当对第二棵树中的Range对象进行更改时,我希望第一棵树中的Range对象也进行更改。实际上,我需要在第一棵树中保留对Range对象的引用或指针:

树#2:

enter image description here

C#是我的惯用语言,我知道您可以使用class Range { public DateTime Start { get; set; } public DateTime End { get; set; } } 关键字,但是我想知道C#是否真的是正确的语言,还是我需要一些类似C ++的指针?

1 个答案:

答案 0 :(得分:2)

是的。

您将Range声明为class(与struct相对),因此,您将仅处理引用(与实际值相对)。

例如,您的List<Range>是对Range对象的引用的集合。

Range具有引用语义在C#中意味着一些事情,例如:

  • 它只等于完全相同的实例
  • 一个Range变量可以容纳null
  • 您总是传递引用,如果这不是您想要的,则需要显式克隆它
  • ...

您可能希望在reference vs. value semantics上快速上手。