c# - 两棵树:一棵树的节点包含一个对象列表;第二棵树的对象包含对第一棵树的对象的引用。可以在 C# 中完成吗?
问题描述
我想建立2个树结构。第一个树将包含节点,每个节点都有我的Range
对象列表:
class Range {
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
树结构将如下所示:
然后我想要从第一棵树构建第二棵树。它将具有类似的结构,但是,当对第二棵树中的 Range 对象进行更改时,我希望第一棵树中的 Range 对象也发生更改。实际上,我需要在第一棵树中保存对 Range 对象的引用或指针:
树#2:
C# 是我的首选语言,我知道您可以使用该ref
关键字,但我想知道 C# 是否真的是正确的语言,还是我需要像 C++ 这样的指针?
解决方案
是的你可以。
您将 Range 声明为class
(而不是struct
),因此您将只处理引用(而不是实际值)。
例如,您List<Range>
是对象引用的Range
集合。
Range
具有引用语义在 C# 中意味着一些事情,例如:
- 它只比较等于完全相同的实例
- 一个
Range
变量可以持有null
- 你总是传递引用,如果这不是你想要的,你需要明确地克隆它
- ...
您可能希望快速回顾一下引用与值语义。
推荐阅读
- html - 如果不弄乱表格格式,就无法分页工作
- laravel - 如何获取 Laravel Blade 中被 Eloquent API Resource 转换的属性值?
- delphi - 如何为 FireMonkey 组件添加设计时图标?
- html - DIV左上角CSS动画后的额外像素
- angular - Angular Service Worker:子路由刷新时出现 404
- python - selenium python beautifulsoup卡在当前页面上
- elasticsearch - Elasticsearch 无法在 AWS kubernetes 集群上启动
- flask - 如何在 Flask 中分析 AJAX 端点?
- statistics - 如何比较不同统计检验的结果?
- java - LatLng GPS 位置的 NullPointerException