Статический метод использует - PullRequest
0 голосов
/ 09 октября 2011

если у меня есть статический метод. Единственное преимущество в том, что у нас есть одна копия. У нас нет объекта для вызова метода.То же самое можно сделать, создав объект, то есть мы можем вызвать метод с объектом.Почему у нас должен быть статический метод.Может кто-нибудь привести пример, чтобы объяснить?

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Статический метод используется, когда разработчик действительно уверен, что у метода есть только один экземпляр в классе. Нет другого экземпляра, который мог бы изменить это. например:

  public class People
  {
      private
      public static Int32 GetValue(Int x)
      {
          return x + 3;
      }
  }

Таким образом, даже если вы создаете экземпляры объектных людей, возврат из статического метода getvalue дает только x + 3. Обычно он используется, когда вы действительно уверены, что создаете функциональный метод, такой как математический или физический метод. Вы можете обратиться к функциональному программированию, которое использует статическую точку зрения.

Некоторые парни из старой школы злоупотребляют статическим методом вместо ООП-подхода.

например:

public class People
{
    public static DataSet GetPeopleById(String personId)
    {  .... implementation that using SQL query or stored procedure and return dataset ... }

    public static DataSet GetXXXXXXX(String name, DateTime datex)
    { .... implementation ... }
}

Реализация выше может быть тысячи строк

Этот стиль встречается повсюду, чтобы сделать его похожим на стиль ООП (потому что это происходит в классе), но мыслить как процедурный подход. Это помощь, поскольку не все люди понимают стиль ООП, а не стиль ООП.

Другим преимуществом использования статики являются экономия памяти и скорость. Вы можете увидеть в блогах: http://www.dotnetperls.com/callvirt

0 голосов
/ 09 октября 2011

Статические методы могут быть полезны, когда у вас есть частные конструкторы, потому что вы хотите абстрагировать процесс создания экземпляра.

Например, в C ++:

class Foo {
  Foo() {}
public:
  static Foo *create() {
    return new Foo;
  }
};

В этом примере абстракция просто вызывает иначе доступный конструктор, но на практике вы можете захотеть иметь пул объектов, который является общим и так далее.метод create() будет управлять этим для вас.


Иногда, когда у вас есть константные члены, которые нужно инициализировать во время сборки, может быть чище перевести логику для этого в privateстатический метод, например:

struct Foo;

struct Bar {
  Bar() : f(make()) {
  }

private:
  const Foo f;

  static Foo make() {
    // Create it here
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...