Каковы преимущества преобразования нормального метода в статический? - PullRequest
4 голосов
/ 25 августа 2009

Как ясно из вопроса, если я преобразую обычный метод в статический, какой выигрыш я получу?

Ответы [ 3 ]

13 голосов
/ 25 августа 2009

Вы получите ясность, потому что static проясняет, что метод не зависит от состояния объекта. Вы также облегчите возможность многократного использования, потому что static методы могут использоваться в большем количестве контекстов (то есть, когда у вас нет экземпляра класса).

В общем, это не вопрос усиления, это вопрос семантики: зависит ли ваш метод от состояния объекта? Если так, сделайте это не static. Во всех остальных случаях сделайте это static.

1 голос
/ 25 августа 2009

Помимо семантических причин, упомянутых выше, статические методы, как правило, быстрее (из-за того, что нет необходимости создавать объект для вызова метода). Они подлежат оптимизации во время компиляции, и, насколько я помню, CLR также выполняет некоторые специальные оптимизации для них.

0 голосов
/ 25 августа 2009

Статическая функция обычно используется для таких утилит, как ConverThisTypeToThatType(), и вы можете вызывать их, не имея объекта своего класса.

Пример: MessageBox.Show("Something");

здесь MessageBox - это класс, а Show - статический метод, поэтому нам не нужно создавать объект MessageBox для вызова Show.

...