2014-09-06 48 views
-3

我在设计2D BSP树的节点类时遇到了“问题”。以下列出了我想要完成的事情。如何动态设置静态只读字段?

  1. 我希望所有节点的某些字段具有相同的值。
  2. 我希望这些字段是只读的,因为一旦创建了树中的第一个节点后,任何字段的值都将被更改,这将会很糟糕/没有意义。
  3. 我希望能够在构建树之前设置这些值。

第1点的解决方案是将字段设置为静态。使字段static readonly(点1 + 2)意味着值必须直接设置或在静态构造函数中设置。使用一些配置文件/类/无论是选项设置静态构造函数中的值。是“正确的”/唯一的方法吗?

编辑删除关于具有不同节点值的多棵树的文本,因为它使整个静态字段无用。

+0

如何为树和树中的另一个节点类树?这些节点可以通过引用返回树来构造,因此也可以构造该特定树的共同值。 – HABO 2014-09-06 21:21:23

+0

@HABO是的。已经有一个树类。解决方案非常简单。出于某种原因,我的大脑被锁定在保留节点类中值的想法中。 – user1323245 2014-09-06 21:25:57

回答

2

将字段标记为静态不是您场景中的最佳选项,因为您明确指出并非所有节点都为此特定字段共享相同的值(取而代之,值取决于它们与之关联的树)。

节点是否有对树本身的引用?然后,您可以提供类似于以下内容的属性:

public int MyProperty 
{ 
    get 
    { 
     return this._tree.CommonValue; 
    } 
} 
+0

+1正确指出'static'将它统一在一个过高的级别。 – 2014-09-06 21:12:17

+0

节点当前没有对该树的引用。它当然是一种选择。我刚才也意识到,如你所指出的那样,在最初的草案之后通过增加对多个树的讨论使静态字段变得无用。将编辑该问题以删除该部分。 – user1323245 2014-09-06 21:13:22