Assert Variable is not Null

If you have the previous check, you can access the value. Nullable types always have two properties: HasValue and Value.

You could either cast to DateTime (Without the ?) or use the value property.

DateTime? BFreigabe = getDateTime();
if (!BFreigabe.HasValue == null) 
    return false;

TimeSpan span = BFreigabe.Value - DateTime.Now;

Or store the nullable variable in a non nullable variable:

DateTime? BFreigabe = getDateTime();
if (BFreigabe.HasValue == null) 
{
    DateTime neverNull = BFreigabe.Value;
    TimeSpan span = neverNull  - DateTime.Now;
}

This will get full editor support and guarantee that there is no NullReferenceExcpetion.

EDIT: Because your question states Assert. Assert usually means that we will throw an exception if the state is invalid.

In this case, omit the check for nullness. If you access var.Value while var is null, this will throw a NullReferenceException. This moves the responsibility to the caller.

Another option would be to not use the nullable variable. Either by converting it (see the second listing) or by not accepting Nullable types as a parameter.

function TimeSpan Calc(DateTime time)
{
    // here we know for sure, that time is never null
}

Tags:

C#

Kotlin