Why this matters
Returning null from a Task or Task<T> method causes a NullReferenceException if awaited. Use Task.CompletedTask or Task.FromResult<T>(null) instead.
Returning null from a Task or Task<T> method causes a NullReferenceException if awaited. Use Task.CompletedTask or Task.FromResult<T>(null) instead.
Returning null from a Task or Task<T> method causes a NullReferenceException if awaited. Use Task.CompletedTask or Task.FromResult<T>(null) instead.
Side-by-side examples engineers can pattern-match during review.
public Task DoFooAsync()
{
return null; // Noncompliant: Causes a NullReferenceException if awaited.
}public Task DoFooAsync()
{
return Task.CompletedTask; // Compliant: Method can be awaited.
}public Task DoFooAsync()
{
return null; // Noncompliant: Causes a NullReferenceException if awaited.
}public Task DoFooAsync()
{
return Task.CompletedTask; // Compliant: Method can be awaited.
}From the same buckets as this rule.
Check if loops use equality operators (== or !=) in termination conditions. These can lead to infinite loops if the condition is never met exactly. Instead, use relational operators like < or > for safer loop termination.