Comment utiliser un Tableau de Type complexe(tableau de classe)

Fermé
comment utiliser un Tableau de Type complexe(tableau de classe) - Modifié par baladur13 le 12/02/2017 à 10:02
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 12 févr. 2017 à 10:48
Bonjour ,
comment utiliser un tableaux de Type complexe : par exemple :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace exemple_
{
    Class Ordinateur // My classe 
    {
        // attributs
        string Nom;
        string Model;
        int Codesecurity;

// constuctores
        public Ordinateur() { }
        public Ordinateur(string Nom) { this.Nom = Nom; }
        public Ordinateur(string Model,bool r) { this.Model = Model; }
        public Ordinateur(int Codesecurity) { this.Codesecurity = Codesecurity; }
        // propretys
        public string nom
        {
            get { return this.Nom; }
            set { this.Nom = value; }
        }
        public string model
        {
            get { return this.Model; }
            set { this.Model = value; }
        }
        public int codesecurity
        {
            get { return this.Codesecurity; }
            set { this.Codesecurity = value; }
        }
        // Methode ( fonction and procudures)
        public void showDetaille()
        {
            Console.WriteLine("Ordinateur : \n\tNom : {0}\n\tModel : {1}\n\tCodesecurity : {2}",     this.Nom, this.Model, this.Codesecurity);
        }
        }
}
    class Program
    {
        static void Main(string[] args)
        {
            Totale_Class.Ordinateur My = new Totale_Class.Ordinateur();
           // pour un utilisation d'un seul variable   pas erreur par exemple:
            My.codesecurity = 450; 
            Console.WriteLine(My.codesecurity);
          // mais l erreur est exactement ici 
           Totale_Class.Ordinateur[] MyTableauOrdinateurDell = new Totale_Class.Ordinateur[3];
         // mon visual stdio il index que il un problème  ici : 
            //MyTableauOrdinateurDell[0].codesecurity = 12;
            //Console.WriteLine(MyTableauOrdinateurDell[0].codesecurity); ;

Console.ReadKey();
        }
    }
}

Merci

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
Modifié par Whismeril le 12/02/2017 à 11:08
Bonjour

Merci à Baladur13 pour la couleur.

Pour tes prochains posts, merci d'appliquer la coloration, Balladur t'as mis un lien vers le tutoriel dans l'encadré bleu.

Tout d'abord, un tableau fonctionne toujours pareil, qu'il contienne des string, des int ou des classes perso. Dans tous les cas ce sont des objets.

Et quand tu crées un tableaux de quoi que ce soit il est d'abord plein de vide.

Donc
int[] entiers = new int[4];
contient 4 "rien", il faut donc que tu lui dise
entiers[1]=456;
à ce moment la seul l'emplacement 1 contient un int et ce int est 456.

Quand tu écris
MyTableauOrdinateurDell[0].codesecurity = 12;

Il n'y a rien dans l'emplacement 0, tu ne peux donc pas affecter sa propriété codesecurity.
MyTableauOrdinateurDell[0] = new Totale_Class.Ordinateur;//xn--initialis-j4a un objet, comme tu le fais plus haut dans ton code.
MyTableauOrdinateurDell[0].codesecurity = 12;//travail avec un objet qui existe




Bon, y a d'autres choses qui ne sont pas terrible dans ton code.
  • My est un mot réservé en .Net (principalement utilisé en Vb.Net, mais bon) donc on ne nomme pas une variable comme ça.
  • tu ne respectes pas les conventions de nommage, ça rendrait ton code un peu plus lisible.
  • ce constructeur
    public Ordinateur(string Model,bool r) { this.Model = Model; }
    est à proscrire, si ta classe vient à être utilisée par quelqu'un d'autre, il ne va pas comprendre à quoi sert le bool. Soit tu fais un constructeur qui prend le nom et le modèle, soit tu utilises une méthode static pour instancier à partir du modèle seul
    public static Ordinateur FromModel(string LeModel)
    {
       return new Ordinateurs{Model = LeModel};
    }




Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0