Following test code outputs 1 for val3 not 3. Why?
private void test()
{
MyClass<string> c1 = new MyClass<string>();
int val1 = c1.IncrementGlobalValue();//--> 1
MyClass<string> c2 = new MyClass<string>();
int val2 = c2.IncrementGlobalValue();//--> 2
MyClass<int> c3 = new MyClass<int>();
int val3 = c3.IncrementGlobalValue();//--> 1
MyClass<int> c4 = new MyClass<int>();
int val4 = c4.IncrementGlobalValue();//--> 2
}
internal class MyClass<T>
{
private static int globalValue = 0;
internal int IncrementGlobalValue()
{
return ++globalValue;
}
}