---
Title: The ?? operator aka the Null Coalescing Operator
Date: 2008-11-23 18:01:40
---

If are familiar to the use of ternary operators, you must have
encountered several situations like this one :

   :::csharp
   string pageTitle = getTitle() ? getTitle() : "Default Title";

You would want to call **getTitle()** only once, but then you wouldn't
have a simple one-lined initialization of you variable. Actually there
is a simple solution that most langages implements, the **null
coalescing operator**; let's replace the above C\# code with this one:

    :::csharp
    string pageTitle = getTitle() ?? "Default Title";

Now you have the same behaviour, but with only one call to your
function. The syntax is simple :
`    possibly_null_value ?? value_if_null` the "??" operator is
implemented in C\# since C\# 2.0. You also have it in C and C++ as a GNU
extension using the "?:" operator :

    :::cpp
    string pageTitle = getTitle() ?: "Default Title";

You can get the same behaviour in javascript using the "||" operator :

    :::javascript
    pageTitle = getTitle() || "Default Title";

You can read more about this operator
[here](http://en.wikipedia.org/wiki/Coalescing_Operator) and
[here](http://en.wikipedia.org/wiki/%3F:)
