2010-10-30 57 views
0

在一個類中我有一個屬性:對象包含在C#中毫無作爲默認屬性

public Move plannedMove; 

默認情況下,我想如果在我的代碼設置一些它包含什麼,這樣我可以測試有些方法類似於

if(!plannedMove) 

或類似的東西。我也希望能夠解除它,以便空白爲空。我怎樣才能做到這一點?

爲了防止我完全錯誤,我將解釋我的原始問題:我的Player對象需要能夠進行可選的預先計算的移動。在GetMove方法中,它需要返回預先計算的移動,或者計算一個。我怎樣才能做到這一點?

編輯:哎呀,忘了提移動是一個結構。

+1

'公衆移動plannedMove;'是不是一個性質,它是一個場。 – herzmeister 2010-10-30 18:19:45

回答

1

默認情況下,這種情況下不會被實例化,將是零,因此

if (plannedMove != null) 
{ 
    // do something here 
} 

就可以了。

1
public Move plannedMove = null; 

...  

if (plannedMove == null) 
    plannedMove = ... // calculate new one 

return plannedMove; 
+0

對象值的默認值爲null爲什麼你要做'public Move plannedMove = null;'? – 2010-10-30 18:08:21

+1

明確有助於可讀性。這是一個風格問題。 – 2010-10-30 18:57:35

0

將其設置爲你的構造空,或當你想讓它什麼都沒有:

this.plannedMove = null 

,那麼你可以檢查它想:

if (this.plannedMove != null) ... 
1

你測試它是否是空的與:

if (plannedMove == null) 

您設置我清空噸,:

plannedMove = null; 

當你與public Move plannedMove;聲明它,它設置爲空(null)默認情況下。

0

看來Move是一個參考類型。所以你的變量plannedMove默認爲null

if (plannedMove == null) 
{ 
    // do something 
} 

如果它是一個值類型,檢查Nullable<T>