That error is a safeguard to prevent incompletely constructed objects from being visible externally. The other places you used "this" do not have a problem because there is no problem with accessing the internal members of "this" from inside the constructor (it is all internal). But you cannot publish an external reference to "this" (placing it into a public static list in your example) before it is fully constructed. It would be clearly undesirable, for example, if another thread was able to access the object before it was completely instantiated. After all, how could you tell the properly constructed objects from the incomplete ones? By publishing a reference to "this" from inside a constructor you would be inviting unpredictable results.
I would recommend creating some type of external "bullet manager" class that places the bullet into the list, etc. after it is finished being instantiated.