Votre question

c# probleme de propriété set

Tags :
  • Consoles
  • Programmation
Dernière réponse : dans Programmation
30 Décembre 2006 14:28:06

Bonjour, j'ai un petit souci avec une propriete. Je n'ai autorisé l'acces au "nom" avec un get mais volontairement j'ai pas mis de set. Or au début du programe je tente un changement sur le nom et le sexe. La console m'affiche les changements alors que le debogueur me dit qu'il ne peut etre assigné vu qu'il est en lecture seul. Alors pourquoi accepte t il la modif ?

voicie le code :
  1. using System;
  2. class MainEntrypoint
  3. {
  4. static void Main()
  5. {
  6. // creation de la classe humain avec une fille coralie
  7. Humain perso = new Humain("coralie", false);
  8. // affichage du resultat
  9.  
  10. Console.WriteLine(perso.resultat());
  11. // changement de nom et de sexe:
  12. perso.LeNom = "hervé";
  13. perso.LeSexe=true;
  14. Console.WriteLine(perso.resultat());
  15.  
  16. }
  17. }
  18.  
  19. class Humain
  20. {
  21. // champs
  22. private string nom;
  23. private bool sexe;
  24.  
  25. // propriété d'acces
  26.  
  27. public string LeNom
  28. {
  29. get
  30. {
  31. return nom;
  32. }
  33.  
  34. }
  35. public bool LeSexe
  36. {
  37. get
  38. {
  39. return sexe;
  40. }
  41. set
  42. {
  43. sexe = value;
  44. }
  45. }
  46.  
  47. // Constructeur pour l'acces aux proprieté et modification des champs
  48. public Humain(string SonNom, bool SonSexe)
  49. {
  50. nom=SonNom;
  51. sexe=SonSexe;
  52. }
  53. // méthode d'affichage du résultat
  54. public string resultat()
  55. {
  56. string recupe=" personne : " + nom ;
  57. recupe+= sexe ?" est un garcon." : " est une fille.";
  58. return recupe;
  59. }
  60. }


j'ai fais l'essais en mettant un set au nom et en suprimant celui du sexe et la parcontre il bloque et reffuse la modif mais pourquoi ne le fait il pas dans le premier cas?

Autres pages sur : probleme propriete set

31 Décembre 2006 13:14:08

Personne n'a une idée, est ce normale ?
a b L Programmation
31 Décembre 2006 16:11:38

ça marche avec les classes ce machin ? (string étant une classe)
Tu vois microsoft inventer des concepts qui servent à rien et qui ne marchent pas ? mmh... ok j'ai rien dis. :D 
Contenus similaires
1 Janvier 2007 17:40:00

string est un type pas une classe...mais ca me donne pas de réponse !
3 Janvier 2007 00:19:46

Je ne sais pas trop bien quel compilateur tu as, mais chez moi, ce code ne compile pas.
La propriété ou l'indexeur 'ConsoleApplication1.Humain.Nom' ne peut pas être assigné -- il est en lecture seule

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace ConsoleApplication1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. Humain h = new Humain("Coralie", Sexe.Feminin);
  12. Console.WriteLine(h);
  13. h.Nom = "Hervé";
  14. h.Sexe = Sexe.Masculin;
  15. Console.WriteLine(h);
  16. }
  17. }
  18.  
  19. public enum Sexe
  20. {
  21. Masculin,
  22. Feminin,
  23. }
  24.  
  25. public class Humain
  26. {
  27. private String _nom;
  28. private Sexe _sexe;
  29.  
  30. public Humain(String nom, Sexe sexe)
  31. {
  32. _nom = nom;
  33. _sexe = sexe;
  34. }
  35.  
  36. public String Nom
  37. {
  38. get { return _nom; }
  39. }
  40.  
  41. public Sexe Sexe
  42. {
  43. get { return _sexe; }
  44. set { _sexe = value; }
  45. }
  46.  
  47. public override string ToString()
  48. {
  49. return String.Format("{0} est de sexe {1}", _nom, _sexe.ToString());
  50. }
  51.  
  52. }
  53. }
3 Janvier 2007 12:11:14

ok merci alors c'est un bug dans la compile je connais pas trop encore je bosse sur le microsoft visual c# 2005 express edition je pense que c'est lui qui compile mais pas sans difficultée apparement.
4 Janvier 2007 09:50:43

J'utilise Visual Studio 2005 Pro, mais il s'agit en fait du même compilateur. Seul l'IDE change.
4 Janvier 2007 13:10:43

Alors je dois faire quelque chose qui va pas ! faut dire que je débute et je maitrise pas l'usine.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS