我想建立2个树状结构。第一棵树将包含节点,每个节点都有我的Range对象的列表:

class Range {
     public DateTime Start { get; set; }
     public DateTime End { get; set; }
}

Tree结构将如下所示:

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

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

树#2:

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

C#是我的首选语言,我知道您可以使用ref关键字,但是我想知道C#是否真的是正确的语言,还是我需要一些类似C++的指针?

最佳答案

是的,可以。

您将Range声明为class(而不是struct),因此,您将只处理引用(而不是实际值)。

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

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

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

  • 您可能需要reference vs. value semantics上的快速入门。

    关于c# - 两棵树:一棵树的节点包含一个对象列表;第二棵树的对象包含对第一棵树的对象的引用。可以用C#完成吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57342149/

    10-11 19:32