【问题标题】:Sharing variables between objects / class properties在对象/类属性之间共享变量
【发布时间】:2019-03-30 19:49:32
【问题描述】:

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

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

基本上我想要:

class World {
    List<Tile> tiles;
}

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

ref 不允许在列表中作为类型参数。有什么办法可以实现这种行为,同时让它们尽可能接近对象/类并且没有重复的图块。

【问题讨论】:

  • Title 已经是一个引用,无论如何都可以引用和共享它们
  • 属性thingies或对象和集合之间共享数据的手段。但是,您的东西不显示任何属性。
  • 正如已经推断的那样,如果您创建一个新的 Tile 对象并将其添加到您的 WorldIsland 类列表中,您对磁贴所做的任何更改都将在两个类。
  • 假设Tile是一个类而不是一个结构..

标签: c# ref


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多