Ok - You do not want that list to be static. Just take the static keywork off.
Class1 c (aweful class name, btw) will retain its non-static values for its whole life. Its life is dictated by its scope. Consider these level of scope and the examples.
If you declare an instance within an if, for loop, using etc. then it's scope is that section. As soon as the section is closed then it is no longer available. It's dead.
int x;
for(int y = 0; y < 10; y++){x=y;}
int a = x;
a = y;
If you declare an instance within a method, then it's life ends when that method exits. This is the scope you are using. It appears that the list is not being used anywhere else other that in the method so this is the appropriate scope.
int x;
void method(){
int y = 10;
x = y;
}
void Main(){
method();
int a = x;
a = y;
}
If you declare an instance in the class then it dies when the class dies. This happens after the class itself has left scope.
class MyClass{ public int y {get;set} }
void method(){
int x = 10;
using(myClass = new MyClass())
{
myClass.y = x;
int a = myClass.y;
}
int b = x;
b = myClass.y
}
If you declare an instance as static then it will not die until the entire application dies. It's scope is maximal.
class MyClass{ public static int y = 10; }
void method(){
int x = MyClass.y;
}
Take a look at these 4 levels of scope. Think about how your instance is being used. Does it really need to be static? Can it instead be in the method or class scope? Do you need Class1 at all, or could you just use a List variable in one of these scopes instead?