Les "= null" indiquent que ces paramètres sont optionnels et ont pour valeur par défaut dans le cas où ils ne sont pas passé, "null".
"null" représente la non assignation de valeur.
Les méthodes possèdent une signature (composée de leur niveau d'accès (public ou private), d'éventuels modificateurs (abstract), de la valeur retournée, de leur nom et de leurs paramètres. Ce qui fait que tu peux avoir plusieurs méthodes avec le même nom mais des signatures différentes.
On appelle surcharge le fait d'avoir plusieurs méthodes du même nom mais avec des signatures différentes.
La surcharge s'applique également aux constructeurs.
Donc tu peux avoir 3 constructeurs pour les 3 cas de figures.
public RSAKey(BigInteger param1, int param2)
{
}
public RSAKey(BigInteger param1, int param2, BigInteger param3)
{
}
public RSAKey(BigInteger param1, int param2, BigInteger param3, BigInteger param4, BigInteger param5, BigInteger param6, BigInteger param7, BigInteger param8);
{
}
En java, pour éviter d'avoir du code dupliqué entre chaque constructeur, tu peut appeler les constructeurs de la classe courante, ce qui donne
public RSAKey(BigInteger param1, int param2)
{
this(param1, param2, null, null, null, null, null, null);
}
public RSAKey(BigInteger param1, int param2, BigInteger param3)
{
this(param1, param2, param3, null, null, null, null, null);
}
public RSAKey(BigInteger param1, int param2, BigInteger param3, BigInteger param4, BigInteger param5, BigInteger param6, BigInteger param7, BigInteger param8);
{
// Traitement normal des paramètres
}
A voir si c'est possible en C#.