Supponiamo di disporre di un metodo che potrebbe essere reso statico, all'interno di una classe non statica.
Per esempio:Metodo statico e metodo non statico
private double power(double a, double b)
{
return (Math.Pow(a, b));
}
Non si vede alcun beneficio dalla modifica della firma del metodo in statica? Nell'esempio di cui sopra:
private static double power(double a, double b)
{
return (Math.Pow(a, b));
}
Anche se c'è qualche guadagno di prestazioni o la memoria, non sarebbe il compilatore lo fa come un semplice ottimizzazione in fase di compilazione?
Modifica: Quello che sto cercando sono i vantaggi dichiarando il metodo come statico. I so che questa è la pratica comune. Mi piacerebbe capire la logica dietro.
E, naturalmente, questo metodo è solo un esempio per chiarire la mia intenzione.
@Everyone, so che questa è una domanda "antica" negli anni di sviluppo, ma è ancora attuale oggi. Molte ** risposte ** eccellenti di seguito. Hai bisogno di numeri di prestazioni reali per il tuo scenario specifico? Scrivi un programma rapido che chiama il metodo abbastanza volte (tra un 'var start = DateTime.Now()' e 'var end = DateTime.Now()') per poter avere un periodo di tempo abbastanza grande da confrontare. Eseguilo alcune volte con 'static' e alcune volte senza' static' e confronta la differenza. Magari apri TaskManager e osserva anche l'utilizzo della memoria per ogni scenario. –
Solo per completezza, invece di confrontare la differenza tra i due 'DateTime.Now()', utilizzare la classe ['StopWatch'] (https://msdn.microsoft.com/en-us/library/system.diagnostics. cronometro (v = vs.110) .aspx). MODIFICA - Perché? È più preciso e più facile da usare rispetto al modo 'DateTime.Now()'. –