In todays episode, I’ll show you how to use three advanced statements in C#. I’ll go over the so-called null-conditional operator, the null-coalescing operator and the ternary operator.

Null-Conditional Operator

You can use the null-conditional operator to prevent _NullReferenceException_s. The basic principle of the operator is to return a value if it is not null, and return null if it is. The following code shows you how to use the operator, which is initiated by a question mark, followed by a dot.

int? val = stringList?.Count;```

You can see the operator preceding the call of the Count-property. Running the code without the operator would lead to a NullReferenceException, but this way, _null_ is assigned to the variable _val_ instead.

## Null-Coalescing Operator

The next operator is the null-coalescing operator. It is initiated by two question marks and it's used to assign different values based on wether the first choice is null or not. To get a better understanding of this, let's look at an example:

```csharpint? val = null;
int result = val ?? 0;```

The value of the variable _val_ is assigned to _result_. However, if _val_ is equal to null, _result_ will receive the value 0.

## Ternary Operator

The last operator in todays article is the ternary operator. It basically provides a short hand version for if-else-statements that can be written in a single line.

Let's look at the following example:

```csharpint val1 = 1;
int val2 = 2;
int smaller;

if (val1 > val2)
{
    smaller = val2;
}
else
{
    smaller = val1;
}```

The if-statement takes up a lot of space while its logic is very simple. This can be replaced by the following code using the ternary operator:

```csharpint val1 = 1;
int val2 = 2;
int smaller = val1 > val2 ? val2 : val1;```

By using the ternary operator, you can simplify the assignment of variable by typing an expression that returns either true or false after the assignment operator. Complete the statement by a question mark. After that, the two values separated by a colon represent the values that will be assigned to the variable. The first one will be used if the statement is true, otherwise the second one is assigned.