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


An Unknown feature in C# Maybe Just For Me

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Hidden Features of C#?

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

1
??


这是空合并运算符,允许您在对象为空时设置默认值。

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


它是这样工作的;

1
Object a = otherObject ??"otherObject is null";

这意味着如果不为空,otherObject将被分配给"a"。如果为空,则右侧的对象将被指定为"A"。

当我想设置默认值时,它对我很有用;

1
2
3
4
5
6
7
8
public class MyClass
{
    private Object b;
    public MyClass(Object a)
    {
        b = a ??"Deafult Value";
    }
}

官方文件也可以在这里找到;msdn


1
object o = someObject ?? anotherObject;

是一样的

1
2
3
4
5
object o;
if(someObject == null)
  o = anotherObject;
else
  o = someObject;

这称为空合并运算符(http://msdn.microsoft.com/en-us/library/ms173224.aspx)。

如果左侧为空,可以使用它返回右侧;否则,它将返回左侧。

例如,可以使用它来简化(在ASP.NET应用程序中):

1
2
3
4
5
6
7
8
9
10
11
12
13
public string SessionStore
{
    get
    {
        if( Session["MyData"] == null )
        {
            return"default value";
        }

        return (string)(Session["MyData"]);
    }
    set { Session["MyData"] = value; }
}

进入这个:

1
2
3
4
5
public string SessionStore
{
    get { return (string)(Session["MyData"]) ??"default value"; }
    set { Session["MyData"] = value; }
}

*??运算符称为空合并运算符,用于定义可为空值类型以及引用类型的默认值。如果不是空值,则返回左侧操作数;否则返回右侧操作数。http://msdn.microsoft.com/en-us/library/ms173224.aspx

1
2
3
4
    // 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);

*

也许您可以使用它来简化一些重复的代码片段。