Standalone C# Discards For Argument Null Checking

C# New Features

Microsoft introduced discards in C# 7.0 These are variables that are intentionally unused in code, commonly used when you have to provide a variable but you never actually need it.

One of my go-to use cases of this is a discard for a variable I’m intentionally trying to ignore, for example, a null argument check in a constructor where the service perhaps has been registered by DI.

public class ServiceOne : IServiceOne 
{
    private IServiceTwo _serviceTwo;

    public ServiceOne(IServiceTwo serviceTwo)
    {
        _ = serviceTwo ?? throw new ArgumentNullException(nameof(serviceTwo), "Service not configured. Please configure in service collection.");

        .....
    }
}

This code uses a discard to force an assignment to serviceTwo we can then use a null coalescing operator to check the argument and throw our ArgumentNullException The original result is never needed so can be discarded.

    Dan Horrocks-Burgess

    Software Developer by day, Disney lover by night.