Why is this an issue?

Unnecessary casting expressions make the code harder to read and understand.

Noncompliant code example

public int Example(int i)
{
    return (int) (i + 42); // Noncompliant
}

public IEnumerable<int> ExampleCollection(IEnumerable<int> coll)
{
    return coll.Reverse().OfType<int>(); // Noncompliant
}

Compliant solution

public int Example(int i)
{
    return i + 42;
}

public IEnumerable<int> ExampleCollection(IEnumerable<int> coll)
{
    return coll.Reverse();
}

Exceptions

Issues are not raised against C# 7.1 default literal.

bool b = (bool)default; // Doesn't raise an issue