If I have a collection object which is empty but needs to be filled and is going to be used by a class (say class Foo), then is it best to do the filling in the constructor?
Something like:
List<string> strings = new List<string();
strings.Add("sjsjhsj");
// So on...
Or should it be in a static private ctor? State is not being changed of the containing class so this can be static, right?
BTW, if I write this.Name = name; or:
john.Name = name;
// Instance method passing in john as a Person object.
Are these both known to be changing state and thus should not be static? Or is it only with instance?
If I need a collection which I want to be able to change the contents of without a recompile, I should use a txt file or xml as the source. Which is faster when using for collections? Txt file will use ReadAllLines(); and XML will use a NodeNavigator (not sure of exact method/object names).
Thanks
First, static constructors cannot be public / private. They simply exist.
If the same instance of your collection is going to be shared amongst all instances of the owning class, then it can be static.
Static doesn’t mean it doesn’t change state. It can still change. The difference is static fields are shared between all instances of the class, so mutable operations on that field need to be coordinated. If all instances of the class will always use the same data, make it static.
Whether a text file or an xml file is faster for you depends on the data.