Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
| Property | Value | 
|---|---|
| Rule ID | IDE0058 | 
| Title | Remove unnecessary expression value | 
| Category | Style | 
| Subcategory | Language rules (expression-level preferences) | 
| Applicable languages | C# and Visual Basic | 
| Options | csharp_style_unused_value_expression_statement_preference | 
| visual_basic_style_unused_value_expression_statement_preference | 
Overview
This rule flags unused expression values. For example:
void M()
{
  Compute(); // IDE0058: computed value is never used.
}
int Compute();
You can take one of the following actions to fix this violation:
- If the expression has no side effects, remove the entire statement. This improves performance by avoiding unnecessary computation. 
- If the expression has side effects, replace the left side of the assignment with a discard (C# only) or a local variable that's never used. This improves code clarity by explicitly showing the intent to discard an unused value. - _ = Compute();
Options
The options for this specify whether to prefer the use of a discard or an unused local variable:
- C# - csharp_style_unused_value_expression_statement_preference
- Visual Basic - visual_basic_style_unused_value_expression_statement_preference
For information about configuring options, see Option format.
csharp_style_unused_value_expression_statement_preference
| Property | Value | Description | 
|---|---|---|
| Option name | csharp_style_unused_value_expression_statement_preference | |
| Applicable languages | C# | |
| Option values | discard_variable | Prefer to assign an unused expression to a discard | 
| unused_local_variable | Prefer to assign an unused expression to a local variable that's never used | |
| Default option value | discard_variable | 
// Original code:
System.Convert.ToInt32("35");
// After code fix for IDE0058:
// csharp_style_unused_value_expression_statement_preference = discard_variable
_ = System.Convert.ToInt32("35");
// csharp_style_unused_value_expression_statement_preference = unused_local_variable
var unused = Convert.ToInt32("35");
visual_basic_style_unused_value_expression_statement_preference
| Property | Value | Description | 
|---|---|---|
| Option name | visual_basic_style_unused_value_expression_statement_preference | |
| Applicable languages | Visual Basic | |
| Option values | unused_local_variable | Prefer to assign an unused expression to a local variable that's never used | 
| Default option value | unused_local_variable | 
' visual_basic_style_unused_value_expression_statement_preference = unused_local_variable
Dim unused = Computation()
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 IDE0058
// The code that's violating the rule is on this line.
#pragma warning restore IDE0058
To disable the rule for a file, folder, or project, set its severity to none in the configuration file.
[*.{cs,vb}]
dotnet_diagnostic.IDE0058.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.