Car la méthode statique main est le point d'entrée du programme. C'est une méthode statique ne nécessitant pas d’instancier un objet.
En revanche ton constructeur Program, lui, est appelé quand tu crées un objet.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
private string a;
static void Main(string[] args)
{
Program p = new Program("salut");
Console.WriteLine(p.a);
Console.ReadLine();
}
public Program(string name)
{
this.a = name;
}
}