首页 > 解决方案 > 在对象/类属性之间共享变量

问题描述

所以我有一个“世界”对象,其中包含一个“瓷砖”列表。我还有一个“岛”对象,其中包含“瓦片”的“世界”对象列表中的某些“瓦片”。出于外部目的,我想将世界和岛屿保留为对象/类。

我希望能够更改世界列表中瓷砖的值,并在瓷砖类中观察到这些变化,反之亦然。

基本上我想要:

class World {
    List<Tile> tiles;
}

class Islands {
    // ref here is not syntax
    List<ref Tile> tiles;
}

但是ref不允许在列表中作为类型参数。以某种方式我可以实现这种行为,同时使它们尽可能接近对象/类并且没有重复的图块。

标签: c#ref

解决方案


不是 100% 清楚您的要求。但是,如果您想共享磁贴,那么WorldIsland引用都会自动看到这些磁贴的值的变化,因为它们共享实例(必须是类而不是结构)。虽然这是被动的。如果您需要在这些更改发生时发生某些事情(例如,告诉WorldIsland查看并注意),则实现一个事件以在属性更改时引发。

如果您需要完全替换 tile 并希望观察该更改,则实现一个间接层;例如,TileReference带有Tile属性的 a。当该属性发生变化时,您可以引发一个事件,并且处理程序可以观察到全新的磁贴。


推荐阅读