2014-09-06 74 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