So I understand what a static method or field is, I am just wondering when to use them. That is, when writing code what design lends itself to using static methods and fields.
One common pattern is to use static methods as a static factory, but this could just as easily be done by overloading a constructor. Correct? For example:
var bmp = System.Drawing.Bitmap.LoadFromFile('Image01.jpg');
As for static fields, is creating singelton-objects their best use?
It gives a better idea of the intent when you use a static factory — it also lets you have different factories that take the same argument types but have a different meaning. For example, imagine if Bitmap had LoadFromResource(string) — it would not be possible to have two constructors that both took string.
EDIT: From stevemegson in the comments