To add to Tony's solution, let me explain the difference between static and non-static objects.
C# is all about classes: everything is part of a class. But they aren't all the same. If you think of cars instead of computers for a moment, you already understand about classes and their instances: your car is a green Ford, my car is a black Mercedes, this car is a green Citroen. Each individual vehicle is an instance of the class "car" - and they are separate and different. If you repaint your car, that doesn't affect "this car" it remains a Green Citroen even if your car is now a Red Ford. These things are called "properties" and they transate exactly into C#.
When you declare a "normal method" it has access to all the fields, properties and methods that are part of the class and apply to an instance of that class.
public class Car
{
public Color Colour;
public void Repaint(Color newColour) { Colour = newColour; }
}
Repaint accesses the properties of the current instance of the Car class and changes the colour of that vehicle only.
But ... there are also static methods (and fields, and properties) which are shared by all instances of a car: all cars have four wheels so it's pointless storing the number of wheels for each instance! But because the "CountWheels" method is generic to all Cars, it can't access any instance specific information as it has no idea which instance to get info from!
So to access "normal" methods, you prefix it with an instance:
public class Car
{
public Color Colour;
public void Repaint(Color newColour) { Colour = newColour; }
}
...
Car myCar = new Car(Color.Black, Make.Mercedes);
Car yourCar = new Car(Color.Green, Make.Ford);
Car thisCar = new Car(Color.Green, Make.Citroen);
yourCar.Repaint(Color.Red);
...
To access a static method, you can't prefix it with an instance, because that would imply it had access to instance data. Instead you prefix it with the Class name
public class Car
{
public Color Colour;
public void Repaint(Color newColour) { Colour = newColour; }
public static int NumberOfWheels = 4;
}
...
Car myCar = new Car(Color.Black, Make.Mercedes);
Car yourCar = new Car(Color.Green, Make.Ford);
Car thisCar = new Car(Color.Green, Make.Citroen);
yourCar.Repaint(Color.Red);
Console.WriteLine(Car.NumberOfWheels);
...
Make sense?