The reason beghind it is a little complicated, but the reason is that
is generic. Take the example
BindingList <int> foo;
BindingList <string> bar;
At Compile Time
the class name is appended with a number for each generic type. Your class has one generic so type so it has `1 after it. A kind of place-holder is left for the actual type. This is because the type cannot be known until runtime, for example the generic can be instaniated by reflection
the framework generates
a class for each specified type in the generic. This is when the substitution of the place-holders for the type is made.
Once defined at runtime, every
will become a
Dictionary <string, string> baz;
Will be compiled to
Once a runtime
type is generated for a specific type e.g. int, it will be re-used for other
See this for fuller (and hopefully clearer explanation):
Very godd question BTW, most people don't notice.
KPB: Corrected grave factual errors - apologies for the confusion. I'm not sure what I was on yesterday, but a good night's sleep seems to have helped!