在对象/类属性之间共享变量

时间:2019-03-30 19:49:32

标签: c# ref

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

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

基本上我想要:

class World {
    List<Tile> tiles;
}

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

但是列表中的ref不允许作为类型参数。无论如何,我可以在保持它们接近对象/类且没有重复的图块的同时实现此行为。

1 个答案:

答案 0 :(得分:1)

对您的要求不是100%明确。但是,如果要共享图块,则WorldIsland引用都将自动看到那些图块的值更改,因为它们共享实例(必须是类,而不是结构)。不过这是被动。如果您需要在这些更改发生时发生某些事情(例如告诉WorldIsland进行注意),请实施一个在属性更改时引发的事件。

如果您需要完全替换一个图块并希望观察到该变化,请实施一个间接层;例如,具有TileReference属性的Tile。当该属性更改时,您可以引发一个事件,处理程序可以观察到全新的图块。