Это Null Coalescing оператор. Это означает, что если первая часть имеет значение, то это значение возвращается, в противном случае возвращается вторая часть.
т.д .:
object foo = null;
object rar = "Hello";
object something = foo ?? rar;
something == "Hello"; // true
Или некоторый фактический код:
IEnumerable<Customer> customers = GetCustomers();
IList<Customer> customerList = customers as IList<Customer> ??
customers.ToList();
Этот пример делает бросает клиентов как IList<Customer>
. Если этот результат приводит к нулевому значению, он вызовет метод LINQ ToList
для клиента IEnumerable.
Сопоставимые, если заявление будет таким:
IEnumerable<Customer> customers = GetCustomers();
IList<Customer> customersList = customers as IList<Customer>;
if (customersList == null)
{
customersList = customers.ToList();
}
Который много кода по сравнению с делать это в одной строке с помощью оператора нуль-коалесцирующий.
Если можно было бы найти "??" на SO это будет квалифицироваться как дубликат, например. [Это] (http://stackoverflow.com/questions/770186/null-coalescing-operator-what-does-coalescing-mean). :-( –
1. Начать C# 2. '??' 3. ПРИБЫЛЬ! – leppie
следить за оператором по приоритету http://msdn.microsoft.com/en-us/library/6a71f45d.aspx – tom3k