CA1809: Avoid excessive locals


This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, use the version selector at the top left. We recommend upgrading to Visual Studio 2019. Download it here

TypeName AvoidExcessiveLocals
CheckId CA1809
Category Microsoft.Performance
Breaking Change Non-breaking


A member contains more than 64 local variables, some of which might be compiler-generated.

Rule Description

A common performance optimization is to store a value in a processor register instead of in memory, which is referred to as enregistering the value. The common language runtime considers up to 64 local variables for enregistration. Variables that are not enregistered are put on the stack and must be moved to a register before manipulation. To allow the chance that all local variables get enregistered, limit the number of local variables to 64.

How to Fix Violations

To fix a violation of this rule, refactor the implementation to use no more than 64 local variables.

When to Suppress Warnings

It is safe to suppress a warning from this rule, or to disable the rule, if performance is not an issue.

CA1804: Remove unused locals