ReSharper 2018.2 Help

Code Inspection: Redundant type specification in default expression

In C#, we have been able to use default(T) when we did not know whether T would be a value type or reference type. Using default(T) would return null for reference types, or a zero-initialized value for value types. It’s pretty tedious to write though, as T could be a very long class name.

With C# 7.1, we have a default literal that can be used instead and infers the type based on the context in which it’s used. It can be used in most places where we would normally use null, as it will work perfectly for both value and reference types.

ReSharper recognizes opportunities to use the default literal syntax where default(T) is being used. A quick-fix allows you to remove the redundant type specification:

Suboptimal code

After the quick-fix

public void Foo() { List<string> someList = default(List<string>); }

public void Foo() { List<string> someList = default; }

Last modified: 5 November 2018

See Also