Remove unused locals

TypeName

RemoveUnusedLocals

CheckId

CA1804

Category

Microsoft.Performance

Breaking Change

NonBreaking

Cause

A method declares a local variable but does not use the variable except possibly as the recipient of an assignment statement. For analysis by this rule, the tested assembly must be built with debugging information and the associated program database (.pdb) file must be available.

Rule Description

Unused local variables and unnecessary assignments increase the size of an assembly and degrade performance.

How to Fix Violations

To fix a violation of this rule, remove or use the local variable. Note that the C# compiler that is included with .NET Framework 2.0 removes unused local variables when the optimize option is enabled.

When to Exclude Warnings

Exclude a warning from this rule if the variable was compiler emitted. It is also safe to exclude a warning from this rule, or disable the rule entirely, if performance and code maintenance are not primary concerns.

Example

The following example shows several unused local variables.

Imports System
Imports System.Windows.Forms

Namespace PerformanceLibrary

   Public Class UnusedLocals

      Sub SomeMethod()
      
         Dim unusedInteger As Integer
         Dim unusedString As String = "hello"
         Dim unusedArray As String() = Environment.GetLogicalDrives()
         Dim unusedButton As New Button()

      End Sub

   End Class

End Namespace
using System;
using System.Windows.Forms;

namespace PerformanceLibrary
{
   public class UnusedLocals
   {
      public void SomeMethod()
      {
         int unusedInteger;
         string unusedString = "hello";
         string[] unusedArray = Environment.GetLogicalDrives();
         Button unusedButton = new Button();
      }
   }
}

Avoid excessive locals

Avoid uncalled private code

Avoid uninstantiated internal classes

Review unused parameters