'var' preferences (IDE0007 and IDE0008)

This article describes two related rules, IDE0007 and IDE0008.

Property Value
Rule ID IDE0007
Title Use var instead of explicit type
Category Style
Subcategory Language rules ('var' preferences)
Applicable languages C#
Options csharp_style_var_for_built_in_types
csharp_style_var_when_type_is_apparent
csharp_style_var_elsewhere
Property Value
Rule ID IDE0008
Title Use explicit type instead of var
Category Style
Subcategory Language rules ('var' preferences)
Applicable languages C#
Options csharp_style_var_for_built_in_types
csharp_style_var_when_type_is_apparent
csharp_style_var_elsewhere

Overview

These two style rules define whether the var keyword or an explicit type should be used in a variable declaration. To enforce that var is used, set the severity of IDE0007 to warning or error. To enforce that the explicit type is used, set the severity of IDE0008 to warning or error.

Options

This rule's associated options define where this style preference should be applied:

For more information about configuring options, see Option format.

csharp_style_var_for_built_in_types

Property Value Description
Option name csharp_style_var_for_built_in_types
Option values true Prefer var is used to declare variables with built-in system types such as int
false Prefer explicit type over var to declare variables with built-in system types such as int
Default option value false
// csharp_style_var_for_built_in_types = true
var x = 5;

// csharp_style_var_for_built_in_types = false
int x = 5;

csharp_style_var_when_type_is_apparent

Property Value Description
Option name csharp_style_var_when_type_is_apparent
Option values true Prefer var when the type is already mentioned on the right-hand side of a declaration expression
false Prefer explicit type when the type is already mentioned on the right-hand side of a declaration expression
Default option value false
// csharp_style_var_when_type_is_apparent = true
var obj = new Customer();

// csharp_style_var_when_type_is_apparent = false
Customer obj = new Customer();

csharp_style_var_elsewhere

Property Value Description
Option name csharp_style_var_elsewhere
Option values true Prefer var over explicit type in all cases, unless overridden by another code style rule
false Prefer explicit type over var in all cases, unless overridden by another code style rule
Default option value false
// csharp_style_var_elsewhere = true
var f = this.Init();

// csharp_style_var_elsewhere = false
bool f = this.Init();

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 IDE0007 // Or IDE0008
// The code that's violating the rule is on this line.
#pragma warning restore IDE0007 // Or IDE0008

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0007.severity = none
dotnet_diagnostic.IDE0008.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