Il metodo Main
viene eseguito senza un'istanza della classe Program
, che è possibile perché è un metodo statico. I metodi statici sono metodi che possono essere chiamati senza la necessità di costruire/istanziare un oggetto dalla classe. Essi possono essere chiamati direttamente sulla classe stessa in questo modo:
Program.Main(new string[0]);
// executes the Main static method on Program class
// with empty string array as argument
Il costruttore non è un metodo statico, per colpire che punto di interruzione è necessario creare un'istanza della classe Program
, in questo modo:
static void Main(string[] arguments)
{
var breakpoint2 = 0;
new Program(); // breakpoint1 will be hit
}
alternativa è possibile make the constructor static, anche se certamente non è really that useful from a testability standpoint e implica anche che si sta andando ad avere variabili statiche (che sono disponibili a livello globale):
static Program() {
var breakpoint1 = 0;
// breakpoint will be hit without an instance of the Program class
}
Ulteriori informazioni su static methods here.
Si dovrebbe leggere la differenza di metodi statici e non statici. –