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 :
Code :
using System;
class MainEntrypoint
{
staticvoid Main()
{
// creation de la classe humain avec une fille coralie
Humain perso = new Humain("coralie", false);
// affichage du resultat
Console.WriteLine(perso.resultat());
// changement de nom et de sexe:
perso.LeNom = "hervé";
perso.LeSexe=true;
Console.WriteLine(perso.resultat());
}
}
class Humain
{
// champs
private string nom;
privatebool sexe;
// propriété d'acces
public string LeNom
{
get
{
return nom;
}
}
publicbool LeSexe
{
get
{
return sexe;
}
set
{
sexe = value;
}
}
// Constructeur pour l'acces aux proprieté et modification des champs
public Humain(string SonNom, bool SonSexe)
{
nom=SonNom;
sexe=SonSexe;
}
// méthode d'affichage du résultat
public string resultat()
{
string recupe=" personne : " + nom ;
recupe+= sexe ?" est un garcon." : " est une fille.";
return recupe;
}
}
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?
Message édité par rvantony le 30-12-2006 à 14:29:36
ç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.
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
Code :
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
staticvoid Main(string[] args)
{
Humain h = new Humain("Coralie", Sexe.Feminin);
Console.WriteLine(h);
h.Nom = "Hervé";
h.Sexe = Sexe.Masculin;
Console.WriteLine(h);
}
}
publicenum Sexe
{
Masculin,
Feminin,
}
publicclass Humain
{
private String _nom;
private Sexe _sexe;
public Humain(String nom, Sexe sexe)
{
_nom = nom;
_sexe = sexe;
}
public String Nom
{
get { return _nom; }
}
public Sexe Sexe
{
get { return _sexe; }
set { _sexe = value; }
}
public override string ToString()
{
return String.Format("{0} est de sexe {1}", _nom, _sexe.ToString());
}
}
}
------------------------------Djakar
http://www.nova-id.com Kit de survie sur les forums : Du bon sens, de la modération, du savoir vivre et une bonne dose d'humour
Répondre à Djakar
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.
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.