Static classes can be used/accessed from anywhere in the project without actually declaring a new instance of it. Now for when to use them ....

Say you have a class that returns the brand name of your car as an example, it really isn't associated with an object, so there is no reason to the unnecessary and create an instance. So you would just do this instead...

C# Code:
  1. static class CarTypeInfo
  2. {
  3.     public static string GetCarType() { return "cartype"; }
  4.     //etc..
  5. }
instead of...

C# Code:
  1. class CarTypeInfo
  2. {
  3.     public string GetCarType() { return "cartype"; }
  4.     //etc..
  5. }

Also note a static class can only contain static methods