C#中的一个未知功能可能只适合我

时间:2011-04-04 07:28:43

标签: c#

  

可能重复:
  Hidden Features of C#?

这是什么?它有用吗?在哪里?

??

5 个答案:

答案 0 :(得分:7)

这是null-coalescing运算符,如果对象为null,则允许您设置默认值。

http://msdn.microsoft.com/en-us/library/ms173224.aspx

答案 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; }
}