13
août
2007
Méthode static et méthode d’instance : pb lors d’une signature identique
août
2007
Imaginons le cas suivant :
public class BaseClass
{
protected void Create()
{
}
}
public class C1 : BaseClass
{
public static C1 Create()
{
C1 c1 = new C1();
c1.Create();
return c1;
}
}
{
protected void Create()
{
}
}
public class C1 : BaseClass
{
public static C1 Create()
{
C1 c1 = new C1();
c1.Create();
return c1;
}
}
Au niveau objet, ce code ne devrait pas poser de problème. Et pourtant le compilateur C# le refuse !
En effet, il « croit » que la méthode Create appelée sur c1 est la méthode static définie dans C1.
De même, il refuse également cela :
public class C2
{
public new static C2 Create()
{
C2 c2 = new C2();
C2.Create();
return c2;
}
protected void Create()
{
}
}
{
public new static C2 Create()
{
C2 c2 = new C2();
C2.Create();
return c2;
}
protected void Create()
{
}
}
Sous prétexte qu’il considère que les deux méthodes Create ont la même signature (le mot clé static n’entrant pas en compte dans la signature).