Add explicit cast in foreach loop (IDE0220)

Property Value
Rule ID IDE0220
Title Add explicit cast
Category Style
Subcategory Language rules (expression-level preferences)
Applicable languages C#
Options dotnet_style_prefer_foreach_explicit_cast_in_source

Overview

This rule flags the absence of an explicit cast in a foreach loop when the compiler would add a hidden cast. For generic, or strongly typed, collections, forcing an explicit cast when the compiler would add a hidden cast can uncover the use of an incorrect type in the foreach statement.

Options

Options specify the behavior that you want the rule to enforce. For information about configuring options, see Option format.

dotnet_style_prefer_foreach_explicit_cast_in_source

Property Value Description
Option name dotnet_style_prefer_foreach_explicit_cast_in_source
Option values always Prefer explicit casts in source code.
when_strongly_typed Prefer explicit casts for strongly typed (generic) collections but not for legacy collections, such as ArrayList.
Default option value when_strongly_typed

Example

// Code with violations.
var list = new List<object>();
foreach (string item in list) { }

// Fixed code.
var list = new List<object>();
foreach (string item in list.Cast<string>())

Suppress a warning

If you want to suppress only a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

#pragma warning disable IDE0220
// The code that's violating the rule is on this line.
#pragma warning restore IDE0220

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

[*.{cs,vb}]
dotnet_diagnostic.IDE0220.severity = none

To disable all of the code-style rules, set the severity for the category Style to none in the configuration file.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

For more information, see How to suppress code analysis warnings.

See also