答案 0 :(得分:7)
这是null-coalescing运算符,如果对象为null,则允许您设置默认值。
答案 1 :(得分:6)
以这种方式工作;
Object a = otherObject ?? "otherObject is null";
如果它不为空,则表示otherObject
将被分配给“a”。如果为null,则右侧的对象将分配给“a”。
当我想设置默认值时,它对我很有用;
public class MyClass
{
private Object b;
public MyClass(Object a)
{
b = a ?? "Deafult Value";
}
}
官方文件也可以在这里找到; MSDN
答案 2 :(得分:2)
object o = someObject ?? anotherObject;
是相同的
object o;
if(someObject == null)
o = anotherObject;
else
o = someObject;
答案 3 :(得分:1)
* ?? operator被称为null-coalescing运算符,用于为可空值类型和引用类型定义默认值。如果它不为null,则返回左侧操作数;否则返回正确的操作数。 http://msdn.microsoft.com/en-us/library/ms173224.aspx
// Assign i to return value of method, unless
// return value is null, in which case assign
// default value of int to i.
int i = GetNullableInt() ?? default(int);
*
也许你可以用它来简化一些重复的代码片段。
答案 4 :(得分:1)
这称为空合并运算符(http://msdn.microsoft.com/en-us/library/ms173224.aspx)。
如果左侧为空,您可以使用它来返回它的右侧;否则,它将返回左侧。
例如,您可以使用它来简化此操作(在ASP.NET应用程序中):
public string SessionStore
{
get
{
if( Session["MyData"] == null )
{
return "default value";
}
return (string)(Session["MyData"]);
}
set { Session["MyData"] = value; }
}
进入这个:
public string SessionStore
{
get { return (string)(Session["MyData"]) ?? "default value"; }
set { Session["MyData"] = value; }
}