Это null-coalescing operator.
Он возвращает первый аргумент, если он не равен нулю, и в этом случае он возвращает второй.
x ?? y
примерно соответствует этому (кроме того, что первый аргумент вычисляется только один раз):
if (x == null)
{
result = y;
}
else
{
result = x;
}
Или же:
(x == null) ? y : x
Это полезно для предоставления значения по умолчанию для когда значение может быть недействительным:
Color color = user.FavouriteColor ?? defaultColor;
COALESCE
При использовании в LINQ для SQL запроса оператора ??
может быть переведен на вызов COALESCE. Например, этот запрос LINQ:
var query = dataContext.Table1.Select(x => x.Col1 ?? "default");
может привести к этому SQL запрос:
SELECT COALESCE([t0].[col1],@p0) AS [value]
FROM [dbo].[table1] AS [t0]
Повторяющийся вопрос http://stackoverflow.com/questions/446835/what-do-two-question-marks-together-mean-in-c? – Crag
Извините, я искал его, и я не смог его найти, поэтому я разместил его. Большое спасибо всем вам, ребята! Мне нравится эта страница, есть ответ на все: D – pjnovas