Prestazioni di metodi statici vs metodi di istanza

La mia domanda riguarda le caratteristiche delle prestazioni dei metodi statici vs i metodi di istanza e la loro scalabilità. Si supponga per questo scenario che tutte le definizioni di class si trovino in un singolo assieme e che siano richiesti più tipi di puntatori discreti.

Prendere in considerazione:

public sealed class InstanceClass { public int DoOperation1(string input) { // Some operation. } public int DoOperation2(string input) { // Some operation. } // … more instance methods. } public static class StaticClass { public static int DoOperation1(string input) { // Some operation. } public static int DoOperation2(string input) { // Some operation. } // … more static methods. } 

Le classi sopra rappresentano un modello di stile di supporto.

In una class di istanza, la risoluzione del metodo di istanza richiede un momento per agire in opposizione a StaticClass.

Le mie domande sono:

  1. Quando mantenere lo stato non è un problema (non sono richiesti campi o proprietà), è sempre meglio usare una class statica?

  2. Dove c’è un numero considerevole di queste definizioni di classi statiche (ad esempio 100, con un numero di metodi statici ciascuna) influirà negativamente sulle prestazioni di esecuzione o sul consumo di memoria rispetto allo stesso numero di definizioni di classi di istanze?

  3. Quando viene chiamato un altro metodo all’interno della stessa class di istanza, la risoluzione dell’istanza si verifica ancora? Ad esempio, utilizzando la [this] parola chiave come this.DoOperation2("abc") da DoOperation1 della stessa istanza.