Bonjour,
Nouveau en C#, j'ai un petit souci de syntaxe.
Je cherche au sein d'un constructeur à appeler un autre constructeur ayant
une autre signature, mais de manière conditionnelle (par exemple par sous la
forme public Animal (string nom,int age):this(age) ).
Voici ci-dessous mon code, avec le bloc de code redondant à la place duquel
j'aimerais appeler l'autre constructeur.
Quelqu'un pourrait-il m'aider?
merci d'avance.
JN.
public class Nombre
{
private enum TypeNombre
{
Type_Numerique,
Type_Indefini
}
private int Valeur_Numerique;
private TypeNombre Type;
public Nombre(int Valeur_int)
{
Type=TypeNombre.Type_Numerique;
Valeur_Numerique=Valeur_int;
}
public Nombre(string Valeur_chaine)
{
int Conversion;
try
{
Conversion=Convert.ToInt32(Valeur_chaine);
// Debut du code redondant
Type=TypeNombre.Type_Numerique;
Valeur_Numerique=Conversion;
//Fin du code redondant
// this(Conversion); --> Ca marche pas
}
catch
{
Type=TypeNombre.Type_Indefini;
}
}
public string Valeur()
{
switch (Type)
{
case TypeNombre.Type_Numerique:
return Valeur_Numerique.ToString();
case TypeNombre.Type_Indefini:
return "Non défini";
default:
return "Erreur interne";
}
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Bacelar
Passez par une méthode d'initialisation (cf "Init" dans le code):
public class Nombre { private enum TypeNombre { Type_Numerique, Type_Indefini } private int Valeur_Numerique; private TypeNombre Type; private void Init(int Valeur_int) { Type=TypeNombre.Type_Numerique; Valeur_Numerique=Valeur_int; } public Nombre(int Valeur_int) { Init(Valeur_int); } public Nombre(string Valeur_chaine) { int Conversion; try { Conversion=Convert.ToInt32(Valeur_chaine); Init(Conversion); } catch { Type=TypeNombre.Type_Indefini; } } public string Valeur() { switch (Type) { case TypeNombre.Type_Numerique: return Valeur_Numerique.ToString(); case TypeNombre.Type_Indefini: return "Non défini"; default: return "Erreur interne"; } } }
-- Paul Bacelar Demandeur d'emploi
"Jean-Nicolas BERGER" wrote in message news:
Bonjour, Nouveau en C#, j'ai un petit souci de syntaxe. Je cherche au sein d'un constructeur à appeler un autre constructeur ayant une autre signature, mais de manière conditionnelle (par exemple par sous
la
forme public Animal (string nom,int age):this(age) ). Voici ci-dessous mon code, avec le bloc de code redondant à la place
public class Nombre { private enum TypeNombre { Type_Numerique, Type_Indefini } private int Valeur_Numerique; private TypeNombre Type; public Nombre(int Valeur_int) { Type=TypeNombre.Type_Numerique; Valeur_Numerique=Valeur_int; } public Nombre(string Valeur_chaine) { int Conversion; try { Conversion=Convert.ToInt32(Valeur_chaine); // Debut du code redondant Type=TypeNombre.Type_Numerique; Valeur_Numerique=Conversion; //Fin du code redondant // this(Conversion); --> Ca marche pas } catch { Type=TypeNombre.Type_Indefini; } } public string Valeur() { switch (Type) { case TypeNombre.Type_Numerique: return Valeur_Numerique.ToString(); case TypeNombre.Type_Indefini: return "Non défini"; default: return "Erreur interne"; } } }
Passez par une méthode d'initialisation (cf "Init" dans le code):
public class Nombre
{
private enum TypeNombre
{
Type_Numerique,
Type_Indefini
}
private int Valeur_Numerique;
private TypeNombre Type;
private void Init(int Valeur_int)
{
Type=TypeNombre.Type_Numerique;
Valeur_Numerique=Valeur_int;
}
public Nombre(int Valeur_int)
{
Init(Valeur_int);
}
public Nombre(string Valeur_chaine)
{
int Conversion;
try
{
Conversion=Convert.ToInt32(Valeur_chaine);
Init(Conversion);
}
catch
{
Type=TypeNombre.Type_Indefini;
}
}
public string Valeur()
{
switch (Type)
{
case TypeNombre.Type_Numerique:
return Valeur_Numerique.ToString();
case TypeNombre.Type_Indefini:
return "Non défini";
default:
return "Erreur interne";
}
}
}
--
Paul Bacelar
Demandeur d'emploi
"Jean-Nicolas BERGER" <jnbergerENLEVEZMOI@wanadoo.fr> wrote in message
news:eAxdHvqjEHA.1712@TK2MSFTNGP09.phx.gbl...
Bonjour,
Nouveau en C#, j'ai un petit souci de syntaxe.
Je cherche au sein d'un constructeur à appeler un autre constructeur ayant
une autre signature, mais de manière conditionnelle (par exemple par sous
la
forme public Animal (string nom,int age):this(age) ).
Voici ci-dessous mon code, avec le bloc de code redondant à la place
Passez par une méthode d'initialisation (cf "Init" dans le code):
public class Nombre { private enum TypeNombre { Type_Numerique, Type_Indefini } private int Valeur_Numerique; private TypeNombre Type; private void Init(int Valeur_int) { Type=TypeNombre.Type_Numerique; Valeur_Numerique=Valeur_int; } public Nombre(int Valeur_int) { Init(Valeur_int); } public Nombre(string Valeur_chaine) { int Conversion; try { Conversion=Convert.ToInt32(Valeur_chaine); Init(Conversion); } catch { Type=TypeNombre.Type_Indefini; } } public string Valeur() { switch (Type) { case TypeNombre.Type_Numerique: return Valeur_Numerique.ToString(); case TypeNombre.Type_Indefini: return "Non défini"; default: return "Erreur interne"; } } }
-- Paul Bacelar Demandeur d'emploi
"Jean-Nicolas BERGER" wrote in message news:
Bonjour, Nouveau en C#, j'ai un petit souci de syntaxe. Je cherche au sein d'un constructeur à appeler un autre constructeur ayant une autre signature, mais de manière conditionnelle (par exemple par sous
la
forme public Animal (string nom,int age):this(age) ). Voici ci-dessous mon code, avec le bloc de code redondant à la place
public class Nombre { private enum TypeNombre { Type_Numerique, Type_Indefini } private int Valeur_Numerique; private TypeNombre Type; public Nombre(int Valeur_int) { Type=TypeNombre.Type_Numerique; Valeur_Numerique=Valeur_int; } public Nombre(string Valeur_chaine) { int Conversion; try { Conversion=Convert.ToInt32(Valeur_chaine); // Debut du code redondant Type=TypeNombre.Type_Numerique; Valeur_Numerique=Conversion; //Fin du code redondant // this(Conversion); --> Ca marche pas } catch { Type=TypeNombre.Type_Indefini; } } public string Valeur() { switch (Type) { case TypeNombre.Type_Numerique: return Valeur_Numerique.ToString(); case TypeNombre.Type_Indefini: return "Non défini"; default: return "Erreur interne"; } } }
Jean-Nicolas BERGER
"Paul Bacelar" a écrit dans le message de news:%
Passez par une méthode d'initialisation (cf "Init" dans le code):
C'est effectivement ce que j'envisageais de faire. Je tenais juste à m'assurer qu'il n'y avait pas d'astuce de syntaxe qui aurait pu m'échapper. Merci encore. JN
"Paul Bacelar" <paul.bacelar@PASDESPAMlaposte.net> a écrit dans le message
de news:%23C77NsrjEHA.3348@TK2MSFTNGP12.phx.gbl...
Passez par une méthode d'initialisation (cf "Init" dans le code):
C'est effectivement ce que j'envisageais de faire.
Je tenais juste à m'assurer qu'il n'y avait pas d'astuce de syntaxe qui
aurait pu m'échapper.
Merci encore.
JN
Passez par une méthode d'initialisation (cf "Init" dans le code):
C'est effectivement ce que j'envisageais de faire. Je tenais juste à m'assurer qu'il n'y avait pas d'astuce de syntaxe qui aurait pu m'échapper. Merci encore. JN