Enumerable.Sum() always executes addition in a checked context, so an OverflowException will be thrown if
the value exceeds MaxValue even if an unchecked context was specified. Using an unchecked context anyway
represents a misunderstanding of how Sum works.
This rule raises an issue when an unchecked context is specified for a Sum on integer types.
void Add(List<int> list)
{
int d = unchecked(list.Sum()); // Noncompliant
unchecked
{
int e = list.Sum(); // Noncompliant
}
}
void Add(List<int> list)
{
int d = list.Sum();
try
{
int e = list.Sum();
}
catch (System.OverflowException e)
{
// exception handling...
}
}
When the Sum() call is inside a try-catch block, no issues are reported.
void Add(List<int> list)
{
unchecked
{
try
{
int e = list.Sum();
}
catch (System.OverflowException e)
{
// exception handling...
}
}
}