Ответ 1
Метод Main
выполняется без экземпляра класса Program
, что возможно, потому что это статический метод. Статические методы - это методы, которые можно вызывать без необходимости создания/создания объекта из класса. Они могут быть вызваны непосредственно самим классом следующим образом:
Program.Main(new string[0]);
// executes the Main static method on Program class
// with empty string array as argument
Конструктор не является статическим методом, чтобы попасть в эту точку останова, чтобы создать экземпляр класса Program
, например:
static void Main(string[] arguments)
{
var breakpoint2 = 0;
new Program(); // breakpoint1 will be hit
}
В качестве альтернативы вы можете сделать конструктор static, хотя, по общему признанию, это не действительно полезный из с точки зрения тестируемости, а также подразумевает, что у вас будут статические переменные (которые доступны по всему миру):
static Program() {
var breakpoint1 = 0;
// breakpoint will be hit without an instance of the Program class
}
Подробнее о статических методах здесь.