Предположим, что у вас есть метод, который может быть сделан статическим, внутри нестатического класса.
Например:Статический или нестатический метод
private double power(double a, double b)
{
return (Math.Pow(a, b));
}
Вы видите какую-либо выгоду от изменения сигнатуры методы в статический? В приведенном выше примере:
private static double power(double a, double b)
{
return (Math.Pow(a, b));
}
Даже если есть выигрыш в производительности или памяти, не компилятор сделать это как простую оптимизацию времени компиляции?
Редактировать: Что я ищу, это преимущества, объявляя метод как статический. I знаю, что это обычная практика. Я хотел бы понять логику этого.
И, конечно, этот метод является всего лишь примером, чтобы прояснить мое намерение.
@ Всем, я знаю, что это «древний» вопрос в годы развития, но он по-прежнему актуальен сегодня. Многие ** превосходные ** ответы ниже. Нужны фактические показатели производительности для вашего конкретного сценария? Напишите краткую программу, которая вызывает метод достаточно раз (между «var start = DateTime.Now()» и «var end = DateTime.Now()»), чтобы иметь прошедший период, достаточно большой для сравнения. Запустите его несколько раз с помощью 'static' и несколько раз без' static' и сравните разницу. Может быть, открыть TaskManager и наблюдать за использованием памяти для каждого сценария. –
Просто для полноты, вместо сравнения разницы между двумя 'DateTime.Now()', используйте класс '' StopWatch' '(https://msdn.microsoft.com/en-us/library/system.diagnostics. секундомер (v = vs.110) .aspx). EDIT - Почему? Это более точная и удобная в использовании функция 'DateTime.Now()'. –