When a non-``++static++`` class field is annotated with ``++ThreadStatic++``, the code seems to show that the field can have different values for different calling threads, but that's not the case, since the ``++ThreadStatic++`` attribute is simply ignored on non-``++static++`` fields. 


So ``++ThreadStatic++`` should either be removed or replaced with a use of the ``++ThreadLocal<T>++`` class, which gives a similar behavior for non-``++static++`` fields.


== Noncompliant Code Example

----
public class MyClass 
{
  [ThreadStatic]  // Noncompliant
  private int count = 0;

  // ...
}
----


== Compliant Solution

----
public class MyClass 
{
  private int count = 0;

  // ...
}
----
or

----
public class MyClass 
{
  private readonly ThreadLocal<int> count = new ThreadLocal<int>();
  public int Count
  {
    get { return count.Value; }
    set { count.Value = value; }
  }
  // ...
}
----


