我来自强大的Java背景,我很习惯这种代码:
Object o = foo();
if (o == null) {
bar();
} else {
somethingElse();
}
public Object foo() {
//code....
if (..) {
return Object;
} else {
return null;
但是c#不允许这样做。我想要一个函数,如果找到它就返回一个对象,如果没有这样的实例则返回null。在c#中使用它的方法是什么?
答案 0 :(得分:1)
您是否尝试在C#中执行此操作?您发布的代码应该在C#中的工作方式完全相同,并且没有理由认为简单的空检查会有所不同。
然而,与Java不同,C#还提供了一种更惯用的处理空值的方法。 C#有??
运算符,它与三元?
运算符非常相似,但检查为null。
Object o = foo();
Object result = o ?? somethingElse();
如果foo()
非空,则该代码段会调用result
并将其分配给o
,如果somethingElse()
为空则调用o
。
请注意,对于值类型,与Java不同,C#具有可空类型的概念。在Java中,
int x = null;
无效。它在C#中也无效,但您可以创建一个可为空的int。这意味着值类型(在本例中为int),也可以将null
作为值。
int? x = null;
这是有效的C#代码。