The reason beghind it is a little complicated, but the reason is that
BindingList
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
At
runtime 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
BindingList <int>
will become a
BindingList`1
.
Dictionary <string, string> baz;
Will be compiled to
Dictionary`1`2
Once a runtime
List
type is generated for a specific type e.g. int, it will be re-used for other
List<int>
s.
See this for fuller (and hopefully clearer explanation):
http://www.artima.com/intv/generics2.html[
^]
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!