【发布时间】:2012-04-29 09:28:31
【问题描述】:
我正在进行一个方法调用,它将另外四个方法调用的结果作为参数——但是进行这些调用的方法可能为空,也可能不为空(抱歉,如果这是一个令人绝望的难以理解的句子)。这是代码,如果它使事情更清楚:
public void Inform(Room north, Room south, Room east, Room west)
{
this.north = north;
this.south = south;
this.east = east;
this.west = west;
node.Inform(north.GetNode(), south.GetNode(),
east.GetNode(), west.GetNode());
}
基本上,我想知道是否有一种快速简便的方法来检查对象是否为空,并且只需将“空”传递给除条件之外的方法——我宁愿不必为所有 16 种可能的变体显式编码为空/不为空。
编辑:为了应对混乱,我想澄清这一点:大多数情况下,我传递给方法的对象不会为空。通常,Room 对象存在于北、南、东和西,如果存在Room,GetNode() 方法将返回适当的对象。我想确定给定的Room 是否存在以避免在尝试进行方法调用时出现空引用异常。
【问题讨论】:
-
您的问题令人困惑。如果一个对象是
null,而你想传递null...为什么不直接传递这个对象呢?null值将通过。也许您可以发布您设想的 16 种变体代码的简短示例,以便我们确切地看到您想要的结果? -
我知道这是另一个 SO 问题的欺骗,但我找不到它。但我认为你想要的是这样的:
node.Inform(north == null ? null : north.GetNode(), ...); -
好的,所以这不是一个完全的骗局,但与此类似:stackoverflow.com/questions/550374/…
-
Domenic,大多数时候对象不会为空——我希望有一些返回的对象被传递到方法中。但是,由于调用返回我想要的对象的对象(即北调用 GetNode())可能为空,抛出异常,我希望能够确定 Room 对象是否为空。