这是什么??符号在这里意味着

时间:2010-10-07 03:32:42

标签: c# null-coalescing-operator

  

可能重复:
  What is the “??” operator for?

??符号在这里意味着什么?

我是否正确地说:使用id,但如果id为空,请使用字符串“ALFKI”?

public ActionResult SelectionClientSide(string id)
        {
            ViewData["Customers"] = GetCustomers();
            ViewData["Orders"] = GetOrdersForCustomer(id ?? "ALFKI");
            ViewData["id"] = "ALFKI";
            return View();
        }
        [GridAction]
        public ActionResult _SelectionClientSide_Orders(string customerID)
        {
            customerID = customerID ?? "ALFKI";
            return View(new GridModel<Order>
            {
                Data = GetOrdersForCustomer(customerID)
            });
        }

3 个答案:

答案 0 :(得分:4)

那是null-coalescing operator.

var x = y ?? z;

// is equivalent to:
var x = (y == null) ? z : y;

// also equivalent to:
if (y == null) 
{
    x = z;
}
else
{
    x = y;
}

即如果xzy将被分配null,否则会被分配y。 因此,在您的示例中,customerID如果原来为"ALFKI",则会设置为null

答案 1 :(得分:2)

这是空合并运算符: http://msdn.microsoft.com/en-us/library/ms173224(VS.80).aspx

当第一个值(左侧)为空时,它提供一个值(右侧)。

答案 2 :(得分:1)

这意味着“如果idcustomerIDnull,请改为假设"ALFKI"