Because that is what they are there for.
Static variables are ones which are common to all instances, or that don't require an instance of the class in order to be used.
Think of cars for a moment:
How many wheels has a car?
That's simple - all cars have four wheels: if they had one, they would fall over, two and they would be motorcycles, three would make them a tricycle, and five or more means they belong in Hollywood, rather than on the road. You don't need to ask the question about a specific car, because all cars share the same information.
What color is a car?
That's harder, because "my car" is red, "your car" is blue, "this car" is green, and so on - the color of the car depends on exactly which car you are referring to.
In C# terms, the
NumberOfWheels
property is
static
- shared by all instances and accessed via the class name:
Console.Writeline(Car.NumberOfWheels);
While the
Color
property is non static (instance based) and requires a specific instance of the class to use:
Car myCar = new Car(...);
Car yourCar = new Car(...);
...
Console.WriteLine("My car is {0}, your car is {1}", myCar.Color, yourCar.Color);
Make sense?