Salut à tous,
J'ai essayé de surcharger +eurs constructeurs dans cette classe :
class Five
{
int member;
public static int counter = 0;
public Five() { System.Console.WriteLine("Instance Constructor is Called !"); }
public Five(int m = -1) { member = m; }
static Five() { System.Console.WriteLine("Static Constructor is Called !"); counter = 10; }
public override string ToString()
{
return member.ToString();
}
}Je m'attendais à une erreur de compilation puisque j'ai un conflit sur le constructeur par défaut à appeler à savoir public Five() ou public Five(int = -1) ! Mais au contraire ça marche et ça appelle le premier constructeur par défaut.Et après dans le Main :
class Begin
{
static void Main(string[] args)
{
System.Console.WriteLine("Counter value before calling static constructor: {0}",Five.counter);
Five f1 = new Five();
Five f2 = new Five(4);
System.Console.WriteLine("Counter value after calling static constructor: {0}", Five.counter);
System.Console.WriteLine("'Five' objects values : {0} , {1}", f1, f2);
}
}
Je refais la même chose pour une fonction et là c'est la deuxième fonction qui est appelée ! Je trouve que déjà ça doit bloquer au niveau de la compilationet que si C# le tolère alors pq le comportement n'est pas déterministe au niveau de l'exécution
Si qq'un a une réponse, je suis preneur. Merci![]()
Partager