To initialize means assigning an initial state to the object before it is used. This initialization can be part of the instantiation process, in that case values are explicitly assigned to object attributes in the constructor of the object.
} An important thing to remember: at the moment you initialize even one object/variable in the struct, all of its other variables will be initialized to default value. If you don't initialize the values in your struct (i.e. if you just declare that variable), all variable.members will contain "garbage values", only if the declaration is local!
A constructor should initialize an object in a way that it's in a usable state. A constructor should only initialize an object, not perform heavy work. A constructor should not directly or indirectly call virtual members or external code. So in most cases an Initialize method shouldn't be required.
These are just a couple of examples where it isn't strictly necessary to initialize a variable, since it's set later (but not accessed between declaration and initialization). In general though, it doesn't hurt to always initialize your variables at declaration (and indeed, this is probably best practice).
Using a collection initializer From C# 3, you can use collection initializers to construct a List and populate it using a single expression. The following example constructs a Human and its ContactNumbers: