Если у вас есть класс:
public class Car {
public static readonly int Wheels = 4;
public static int Count {get;set;}
public string Make {get;set;}
public string Model {get;set;}
public int Year {get;set;}
public Car() { Car.Count = Car.Count + 1; }
public string SoundOff(){
return String.Format("I am only 1 out of {0} car{1}",
Car.Count, (Car.Count > 0 ? "s" : String.Empty));
}
}
Затем, каждый раз, когда вы создаете машину, количество увеличивается на единицу. Это связано с тем, что свойство Count
принадлежит классу Car, а не объекту, который вы создали.
Это также полезно, потому что каждый автомобиль может иметь знание Car.Count
. Итак, если вы создали:
Car sportster = new Car {
Make="Porsche", Model="Boxster", Year=2010 };
sportster.SoundOff(); // I am only 1 out of 1 car
Вы можете выполнить другую обработку, и Count будет известен всем объектам:
Car hybrid = new Car { Make="Toyota", Model="Prius", Year=2010 };
hybrid.SoundOff(); // I am only 1 out of 2 cars
sportster.SoundOff(); // I am only 1 out of 2 cars
Итак, другими словами, вы должны использовать static, когда хотите что-то:
- Быть доступным на уровне класса, чтобы об этом знали все объекты (
Car.Count
вместо hybrid.Count
)
- Представляет класс, а не объект (
Car.Wheels
не изменится)
Существуют и другие причины использовать статические, такие как классы утилит, методы расширения и т. Д. Но это должно ответить на ваш вопрос о формулировке MSDN.