c# - 在对象/类属性之间共享变量
问题描述
所以我有一个“世界”对象,其中包含一个“瓷砖”列表。我还有一个“岛”对象,其中包含“瓦片”的“世界”对象列表中的某些“瓦片”。出于外部目的,我想将世界和岛屿保留为对象/类。
我希望能够更改世界列表中瓷砖的值,并在瓷砖类中观察到这些变化,反之亦然。
基本上我想要:
class World {
List<Tile> tiles;
}
class Islands {
// ref here is not syntax
List<ref Tile> tiles;
}
但是ref
不允许在列表中作为类型参数。以某种方式我可以实现这种行为,同时使它们尽可能接近对象/类并且没有重复的图块。
解决方案
不是 100% 清楚您的要求。但是,如果您想共享磁贴,那么World
和Island
引用都会自动看到这些磁贴的值的变化,因为它们共享实例(必须是类而不是结构)。虽然这是被动的。如果您需要在这些更改发生时发生某些事情(例如,告诉World
或Island
查看并注意),则实现一个事件以在属性更改时引发。
如果您需要完全替换 tile 并希望观察该更改,则实现一个间接层;例如,TileReference
带有Tile
属性的 a。当该属性发生变化时,您可以引发一个事件,并且处理程序可以观察到全新的磁贴。
推荐阅读
- html - knockoutjs if 语句并用 html 替换文本
- pandas - str.contains 在 pandas 列中搜索以逗号分隔的多个字符串
- spring-boot - 使用本机查询在 JPA 中进行内部联接
- python - 视图中出现多个错误,编辑模型列表
- java - 无 arg 的 repaint() 是否比带 args 的 repaint() 更好?
- ruby-on-rails - 如何通过 Rails 中的审计协会模型创建正确的 has_one: :
- mysql - 如何在 sql 中添加自动增量,使得前十个插入的 id 为 1,然后下一个十个插入 2,依此类推
- ssl - 如何在 ActiveMQ Artemis 中为基于 keystore 和 truststore 的 MQTT 协议启用 SSL
- c# - 如何设置系统鼠标双击速度
- spring-boot - 不同网络各方之间的Openid