Static data is not shared among constructed generic types.
That is, the final line of output from the following program:
using System; class Program { static void Main() { NonGeneric.PrintCount(); // "Called 1 time." NonGeneric.PrintCount(); // "Called 2 times." Generic<int>.PrintCount(); // "Called 1 time." Generic<string>.PrintCount(); // ? } public static void DoPrintCount(int count) { Console.WriteLine("Called {0} time{1}.", count, count > 1 ? "s" : ""); } } class NonGeneric { public static void PrintCount() { Program.DoPrintCount(++count); } static int count; } class Generic<T> { public static void PrintCount() { Program.DoPrintCount(++count); } static int count; }
Is “Called 1 time.”