2010-10-30 58 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>